Just nu i M3-nätverket
Gå till innehåll

Ladda upp bild som binära data i accessdatabas


Aleece

Rekommendera Poster

Hjälp! Finns det någon människa som har erfarenhet av att ladda upp bilder på detta sätt i forumsinlägg?? Jag har fått tag i en lösning men där kan man bara ladda upp bilden. Har ett färdigt forum som jag vill inplementera detta i men jag har kört fast...

 

Länk till kommentar
Dela på andra webbplatser

Hej!

 

Måste du spara bilderna i databas då? Det är ju förbannat bökigt att både lägga in och hämta dem därifrån. Jag tycker det bästa sättet är att ha bilderna i någon mapp på servern och så döper man bilderna till ID:t på det inlägget de hör till.

 

Mvh

 

Länk till kommentar
Dela på andra webbplatser

Jamen en besökare laddar ju upp bilden. Jag kan inte använda en vanlig upload typ Softartisans för den komponenten finns inte på servern. Men du kanske har någon annan lösning?

 

Länk till kommentar
Dela på andra webbplatser

  • 8 months later...

Hej!

 

Jag kämpar som en tok för att försöka få upp bilder i en databas på ett webhotell som använder softartisans uploadkomponent.

 

Jag lyckad utan problem ladda upp bilder i en mapp på servern.

Men hur kan jag sedan koppla ihop bilderna i mappen med ett visst radid i en tabell, för att viss info skall visas ihop med viss bild?

 

Måste jag inte använda en databas till det menar du?

 

Väldigt tacksam för lite tips! :-)

 

Hälsningar /Erik

 

Länk till kommentar
Dela på andra webbplatser

Jag brukar förespråka att lägga filerna direkt i databasen för att det underlättar "concistency" och backup. Nackdelen är ev. prestandaförlust (tid/utrymme) även om jag hittills inte sett några bra siffor på detta.

 

Hur som helst. Väljer du att spara alla filer på disk så är det nog enklast att lägga sökväg/filnamn i en kolumn i databasen.

 

Tidigare inlägg i samma anda:

//eforum.idg.se/viewmsg.asp?EntriesId=580453#580784

//eforum.idg.se/viewmsg.asp?EntriesId=703542#704780

//eforum.idg.se/viewmsg.asp?EntriesId=530474

osv.

http://search.idg.se/eforum/default.asp?allaSajter=true&eforum=true&soktext=databas+bilder+bild&rubrik=&skrivetav=&startyear=1995&startmonth=01&startday=01&endyear=2005&endmonth=11&endday=02&allaSajterCheckbox=on&sortera=relevans

 

 

/Cluster

------------------------------------------------------------

Ditt vetande är värdelöst om inte andra vet att du vet

-----------> http://eforum.kicks-ass.net <------------

 

Länk till kommentar
Dela på andra webbplatser

Hej Tack för tipsen

 

Jag har letat efter tidigare inlägg här och hittat en hel del.

Genomgående måste jag säga att det verkar ganska knepigt att lägga in bilder i en tabell, för att sedan lägga ut dem på en sida.

 

Är det verkligen så knepigt eller har jag haft otur?

Jag har sett en del ex. med metoden Addnew osv.

 

Jag skulle dock vilja hitta något med den vanliga sqlsyntax. INSERT

Då skulle jag mer veta vad jag sysslar med..

 

Har Du något konkret enkelt script som laddar upp bilder i en tabell med INSERT?

 

Jag använder en vanlig accessdb som jag vill lagra bilderna i

 

Hälsningar /Erik

 

Länk till kommentar
Dela på andra webbplatser

Har inte hållt på så mkt med SA FileUp utan använt Persits AspUpload

Där är det enkelt:[log]

[MÄRK]<%[/MÄRK]
tmpFolder=[GRÅ]"c:\upload"[/GRÅ]

[color="#0000ff"]Set[/color] Upload = [b]Server[/b].[color="#0000ff"]CreateObject[/color]([GRÅ]"Persits.Upload"[/GRÅ])
Connect = [GRÅ]"Provider=Microsoft.Jet.OLEDB.4.0; Data Source="[/GRÅ] & [b]Server[/b].MapPath([GRÅ]"myDb.mdb"[/GRÅ])

Upload.Save tmpFolder

[color="#0000ff"]Set[/color] File = Upload.Files([GRÅ]"myFileName"[/GRÅ])
[color="#0000ff"]If[/color] [color="#0000ff"]Not[/color] File Is [color="#0000ff"]Nothing[/color] [color="#0000ff"]Then[/color]
   SQL = [GRÅ]"INSERT INTO images(image_blob, filename, filesize) VALUES(?, '"[/GRÅ]&File.Filename&[GRÅ]"', "[/GRÅ]&File.Size&[GRÅ]")"[/GRÅ]
   File.ToDatabase Connect, SQL

   [color="#006400"]'Töm temp-mappen[/color]
   [color="#0000ff"]Set[/color] fso = [b]Server[/b].[color="#0000ff"]CreateObject[/color]([GRÅ]"Scripting.FileSystemObject"[/GRÅ]) 
   fso.DeleteFile(tmpFolder&[GRÅ]"\*.*"[/GRÅ]) 
   [color="#0000ff"]Set[/color] fso = [color="#0000ff"]Nothing[/color]

   [b]Response[/b].Write([GRÅ]"Filen sparad i databasen!"[/GRÅ])
[color="#0000ff"]Else[/color]
   [b]Response[/b].Write([GRÅ]"Ingen fil angiven!"[/GRÅ])
[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
[MÄRK]%>[/MÄRK]

[/log]

 

På SA's sida finns denna exempelkod som verkar göra samma sak. Dok mer felkontroller etc.

 

[log]

[MÄRK]<%[/MÄRK]
   [color="#0000ff"]Option Explicit[/color]

   [color="#006400"]'--- Declarations[/color]
   [color="#0000ff"]Dim[/color] oFileUp
   [color="#0000ff"]Dim[/color] oConn
   [color="#0000ff"]Dim[/color] oRS

   [color="#006400"]'--- Instantiate the FileUp object[/color]
   [color="#0000ff"]Set[/color] oFileUp = [b]Server[/b].[color="#0000ff"]CreateObject[/color]([GRÅ]"SoftArtisans.FileUp"[/GRÅ])

   [color="#006400"]'--- Set the Path property to the location you wish to[/color]
   [color="#006400"]'--- temporarily cache the incoming file before saving[/color]
   [color="#006400"]'--- Note: This property must be set immediately after[/color]
   [color="#006400"]'--- instantiating the FileUp object[/color]
   oFileUp.Path = [b]Server[/b].MapPath([b]Application[/b]([GRÅ]"vroot"[/GRÅ]) & [GRÅ]"/temp"[/GRÅ])

   [color="#006400"]'--- Check to be sure there was a file selected in the form[/color]
   [color="#006400"]'--- If so, continue processing[/color]
   [color="#0000ff"]If[/color] [color="#0000ff"]IsObject[/color](oFileUp.Form([GRÅ]"myFile"[/GRÅ])) [color="#0000ff"]Then[/color]
      [color="#0000ff"]If[/color] [color="#0000ff"]Not[/color] oFileUp.Form([GRÅ]"myFile"[/GRÅ]).IsEmpty [color="#0000ff"]Then[/color]

         [color="#006400"]'--- Create ADODB Connection and Recordset[/color]
         [color="#0000ff"]Set[/color] oConn = [b]Server[/b].[color="#0000ff"]CreateObject[/color]([GRÅ]"ADODB.Connection"[/GRÅ])
         [color="#0000ff"]Set[/color] oRS = [b]Server[/b].[color="#0000ff"]CreateObject[/color]([GRÅ]"ADODB.Recordset"[/GRÅ])

         [color="#006400"]'--- Open the connection[/color]
         [color="#0000ff"]On Error Resume[/color] [color="#0000ff"]Next[/color]
            oConn.Open [b]Application[/b]([GRÅ]"connString"[/GRÅ])
            [color="#0000ff"]If[/color] Err.Number <> 0 [color="#0000ff"]Then[/color]
               [b]Response[/b].Write [GRÅ]"<B>An error occurred opening the database "[/GRÅ] & _
                           [GRÅ]"connection</b><br>"[/GRÅ] &    Err.Description & _
                           [GRÅ]" ("[/GRÅ] & Err.Source & [GRÅ]")"[/GRÅ]
               [b]Response[/b].[color="#0000ff"]End[/color]
            [color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
         [color="#0000ff"]On Error[/color] Goto 0

         [color="#006400"]'--- Open the recordset and add a new record[/color]
         [color="#0000ff"]On Error Resume[/color] [color="#0000ff"]Next[/color]
            oRS.Open [GRÅ]"UploadTable"[/GRÅ], oConn, 2, 3
            [color="#0000ff"]If[/color] Err.Number <> 0 [color="#0000ff"]Then[/color]
               [b]Response[/b].Write [GRÅ]"<B>An error occurred opening the RecordSet</b><br>"[/GRÅ] & _
                           Err.Description & [GRÅ]" ("[/GRÅ] & Err.Source & [GRÅ]")"[/GRÅ]
               [b]Response[/b].[color="#0000ff"]End[/color]
            [color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
         [color="#0000ff"]On Error[/color] Goto 0

         oRS.AddNew

         [color="#006400"]'--- Insert the text values into the recordset[/color]
         oRS.Fields([GRÅ]"FileName"[/GRÅ]).Value = oFileUp.Form([GRÅ]"myFile"[/GRÅ]).ShortFileName
         oRS.Fields([GRÅ]"ContentType"[/GRÅ]).Value = oFileUp.Form([GRÅ]"myFile"[/GRÅ]).ContentType
         oRS.Fields([GRÅ]"ByteSize"[/GRÅ]).Value = oFileUp.Form([GRÅ]"myFile"[/GRÅ]).TotalBytes
         oRS.Fields([GRÅ]"Comment"[/GRÅ]).Value = oFileUp.Form([GRÅ]"Comment"[/GRÅ])

         [color="#006400"]'--- Now, use FileUp to save the file itself into the recordset field[/color]
         [color="#0000ff"]On Error Resume[/color] [color="#0000ff"]Next[/color]
            oFileUp.Form([GRÅ]"myFile"[/GRÅ]).SaveAsBlob oRS.Fields([GRÅ]"FileBinary"[/GRÅ])
            [color="#0000ff"]If[/color] Err.Number <> 0 [color="#0000ff"]Then[/color]
               [b]Response[/b].Write [GRÅ]"<B>An error occurred while saving the file "[/GRÅ] & _
                           [GRÅ]"to the database</B><BR>"[/GRÅ] & Err.Description & _
                           [GRÅ]" ("[/GRÅ] & Err.Source & [GRÅ]")"[/GRÅ]
               [b]Response[/b].[color="#0000ff"]End[/color]
            [color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
         [color="#0000ff"]On Error[/color] Goto 0

         [color="#006400"]'--- Update the recordset[/color]
         [color="#0000ff"]On Error Resume[/color] [color="#0000ff"]Next[/color]
            oRS.Update
            [color="#0000ff"]If[/color] Err.Number <> 0 [color="#0000ff"]Then[/color]
               [b]Response[/b].Write [GRÅ]"<B>An error occurred updating the RecordSet</b><br>"[/GRÅ] & _
                           Err.Description & [GRÅ]" ("[/GRÅ] & Err.Source & [GRÅ]")"[/GRÅ]
               [b]Response[/b].[color="#0000ff"]End[/color]
            [color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
         [color="#0000ff"]On Error[/color] Goto 0

         [color="#006400"]'--- Close our ADO objects[/color]
         oRS.Close
         oConn.Close

         [color="#006400"]'--- Display information about the saved file[/color]
         [b]Response[/b].Write [GRÅ]"<H3>FileUp Successfully Saved the File to the Database </H3>"[/GRÅ]
         [b]Response[/b].Write [GRÅ]"<DL>"[/GRÅ]

         [color="#006400"]'--- UserFilename is the full path of the file as it was sent from the client[/color]
         [b]Response[/b].Write [GRÅ]"<DT><B>Path on client</B></DT><DD>"[/GRÅ] & oFileUp.Form([GRÅ]"myFile"[/GRÅ]).UserFilename & [GRÅ]"</DD>"[/GRÅ]
         [color="#006400"]'--- ShortFileName is just the Userfilename without the path[/color]
         [b]Response[/b].Write [GRÅ]"<DT><B>Short filename</B></DT><DD>"[/GRÅ] & oFileUp.Form([GRÅ]"myFile"[/GRÅ]).ShortFilename & [GRÅ]"</DD>"[/GRÅ]
         [color="#006400"]'--- TotalBytes is the byte size of the file[/color]
         [b]Response[/b].Write [GRÅ]"<DT><B>Byte size</B></DT><DD>"[/GRÅ] & oFileUp.Form([GRÅ]"myFile"[/GRÅ]).TotalBytes & [GRÅ]"</DD>"[/GRÅ]
         [color="#006400"]'--- ContentType is the mime type of the file. Eg, [GRÅ]"application/msword"[/GRÅ][/color]
         [b]Response[/b].Write [GRÅ]"<DT><B>Content type</B></DT><DD>"[/GRÅ] & oFileUp.Form([GRÅ]"myFile"[/GRÅ]).ContentType & [GRÅ]"</DD>"[/GRÅ]
         [b]Response[/b].Write [GRÅ]"</DL>"[/GRÅ]

      [color="#0000ff"]Else[/color]
         [b]Response[/b].Write [GRÅ]"There was no file submitted for upload."[/GRÅ]
      [color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
   [color="#0000ff"]Else[/color]
      [b]Response[/b].Write [GRÅ]"The referenced field does not exist or is not of type="[/GRÅ][GRÅ]"file"[/GRÅ][GRÅ]""[/GRÅ]
   [color="#0000ff"]End[/color] [color="#0000ff"]If[/color]

   [color="#006400"]'--- Dereference objects[/color]
   [color="#0000ff"]Set[/color] oFileUp = [color="#0000ff"]Nothing[/color]
   [color="#0000ff"]Set[/color] oRS = [color="#0000ff"]Nothing[/color]
   [color="#0000ff"]Set[/color] oConn = [color="#0000ff"]Nothing[/color]
[MÄRK]%>[/MÄRK]

[/log]Källa: http://support.softartisans.com/support-216.aspx

 

Det går även "bra" utan komponent. Då blir det dock en hel del mer kod att sätta sig in i...

//eforum.idg.se/viewmsg.asp?EntriesId=557499#557507

 

/Cluster

------------------------------------------------------------

Ditt vetande är värdelöst om inte andra vet att du vet

-----------> http://eforum.kicks-ass.net <------------

 

[inlägget ändrat 2005-11-02 20:00:22 av Cluster]

Länk till kommentar
Dela på andra webbplatser

Hej ajg använder koden som du tipsade om men får detta felmedd.

 

Server object error 'ASP 0177 : 800401f3'

 

Server.CreateObject Failed

 

/upload.asp, line 4

 

800401f3

-----------------------------

Detta är själva uploadsidan.

 

 

<%

tmpFolder="c:\upload"

 

Set Upload = Server.CreateObject("Persits.Upload")

'Connect = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("OSDB.mdb")

Connect "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & Server.MapPath("OSDB.mdb") &";"

Upload.Save tmpFolder

 

Set File = Upload.Files("myFileName")

If Not File Is Nothing Then

SQL = "INSERT INTO images(image_blob, filename, filesize) VALUES(?, '"&File.Filename&"', "&File.Size&")"

File.ToDatabase Connect, SQL

 

'Töm temp-mappen

Set fso = Server.CreateObject("Scripting.FileSystemObject")

fso.DeleteFile(tmpFolder&"\*.*")

Set fso = Nothing

 

Response.Write("Filen sparad i databasen!")

Else

Response.Write("Ingen fil angiven!")

End If

%>

 

 

Länk till kommentar
Dela på andra webbplatser

Hej ajg använder koden som du tipsade om men får detta felmedd.

Som Cluster skrev så handlar det här om AspUpload. Har du inte den installerad fungerar det förstås inte.

 

Länk till kommentar
Dela på andra webbplatser

Måste jag ja något script eller program från persits för att få upload från dem att fungera?

Ja, du behöver komponenten AspUpload från Persits. Men eftersom ditt webbhotell använder SAFileUp så är detta inget du kan använda (du får inte installera egna komponenter på ett webbhotell, utan får nöja dig med det de erbjuder)

 

Men som Cluster också påpekade så finns det faktiskt manualer på SA:s sajt. (Han gav även ett exempel)

http://support.softartisans.com/support-216.aspx

 

Länk till kommentar
Dela på andra webbplatser

Och dessutom så tipsar jag om att det även går att ladda upp utan installerade komponenter. Men då gäller det att hålla tungan rätt i mun och sätta sig in i hur det fungerar. Kolla isf på någon av alla dessa:

http://www.google.se/search?hl=sv&q=upload+pure+%2Basp

 

...eller som sagt i denna tråd:

//eforum.idg.se/viewmsg.asp?EntriesId=557499#557507

 

 

/Cluster

------------------------------------------------------------

Ditt vetande är värdelöst om inte andra vet att du vet

-----------> http://eforum.kicks-ass.net <------------

 

Länk till kommentar
Dela på andra webbplatser

En sista fråga..

 

Jag har bestämt mig för att ladda upp filerna i en mapp på servern. och istället skriva in sökvägen i en databas.

 

Men kruxet är: att jag vill på en formulärsida ladda in både information OCH bilden.

 

Som det är nu så kan jag inte ladda in både bildnamn och övrig info, för INSERT scriptet tar inte in den övriga infon. bara bildscriptet genomförs så att bilden hamnar i mappen.

 

Hur kan jag göra??

 

Hälsningar Erik

 

 

Länk till kommentar
Dela på andra webbplatser

RTFM....

 

Oftast är det så att vanliga Request.Form inte fungerar när man använder uploadkomponenter då dessa använder internetstandarden RFC1867. Man får istället använda upload-komponentens formulärobjekt (i detta fall upl.Form) för detta.

 

Se:

http://support.softartisans.com/kbview.aspx?ID=492 och http://support.softartisans.com/kbview.aspx?ID=488

 

/Cluster

------------------------------------------------------------

Ditt vetande är värdelöst om inte andra vet att du vet

-----------> http://eforum.kicks-ass.net <------------

 

[inlägget ändrat 2005-11-04 13:05:33 av Cluster]

Länk till kommentar
Dela på andra webbplatser

Hej

 

Tack för hjälpen, måste dock tillstå att jag inte riktigt förstår hur jag använder upl.form? är det en komponent?

Eller skriver jag upl.form istället för Request? på formulärsidan?

 

/Erik

 

Länk till kommentar
Dela på andra webbplatser

Har du läst informationen i länkarna ovan???

Instead of using ASP's Request.Form object, use the SoftArtisans FileUp form object (upl.Form) which has identical functionality to Request.Form, but understands the different form encoding scheme used when performing file uploads.
Vilket direktöversatt på svenska betyder:

Vid uppladdning mha SA FileUp ska du stället för Request.Form använda upl.Form som har samma funktionalitet.

 

 

/Cluster

------------------------------------------------------------

Ditt vetande är värdelöst om inte andra vet att du vet

-----------> http://eforum.kicks-ass.net <------------

 

Länk till kommentar
Dela på andra webbplatser

Hej

 

Ja tack jag HAR läst länkarna ovan, vilket ändå föranledde mig att ställa min fråga.

 

Tack för direktörsöversättningen iallafall.

 

Hälsningar /Erik

 

Länk till kommentar
Dela på andra webbplatser

Tack för direktörsöversättningen iallafall.
Förstod du då hur du skall lösa det?

 

 

/Cluster

------------------------------------------------------------

Ditt vetande är värdelöst om inte andra vet att du vet

-----------> http://eforum.kicks-ass.net <------------

 

Länk till kommentar
Dela på andra webbplatser

Hej

 

jadå det tror jag nog. jag bytte ut request.form mot upl.form på själva uploadsidan (som även innehåller INSERT kommandot)

 

Däremot fick jag något felmedd. som verkade tyda på läs och skrivrättigheter på servern. Märkligt.. jag har frågat leverantören, men inte fått svar ännu, så vi får väl se om det löser sig. :-)

 

Hälsningar /erik

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...