21. marts 2002 - 20:56Der er
5 kommentarer og 1 løsning
Tilføje binære (binary) data til MySQL database
Er der nogen der har koden til at tilføje binære (binary) data til MySQL database, nedenstående kan bruges til Access (mdb) database, men det virker altså ikke til MySQL:
Jeg betaler gerne, hvis der er en der kan komme med en løsning!
'String to byte string conversion Function getByteString(StringStr) For i = 1 to Len(StringStr) char = Mid(StringStr,i,1) getByteString = getByteString & chrB(AscB(char)) Next End Function
'Byte string to string conversion Function getString(StringBin) getString ="" For intCount = 1 to LenB(StringBin) getString = getString & chr(AscB(MidB(StringBin,intCount,1))) Next End Function
Function StringToBinary(S) Dim i, ByteArray For i=1 To Len(S) ByteArray = ByteArray & ChrB(Asc(Mid(S,i,1))) Next StringToBinary = ByteArray End Function
Jeg har arbejdet lidt med dit problem - bl.a. med ovenstående kode - men jeg har desværre ikke ADODB.Stream på min lokale PWS. Jeg har så prøvet med alm. TextStream men den gemmer selvfølgelig ikke hele billedet.
Jeg har god erfaring med upload af billeder til databaser - men i dit eksempel er billedet jo allerede uploaded.
Hvis du har gemt billedet i MySql med den nye kode - men ikke kan vise billedet kan du prøve med følgende kode til udtrækket:
if not objRS.EOF then ' response.binaryWrite getByteString(getString(objRS("filedata"))) len = objRS("filedata").ActualSize if len > 0 then pic = objRS("filedata").GetChunk(len) Response.BinaryWrite pic end if else response.redirect "1x1.gif" end if
Hvis det ikke virker er det måske fordi at billedet ikke er gemt korrekt i feltet, filedata.
Jeg vil også mene at din første kode er bedre til at gemme billedet end den nye kode du har fundet. Den nye kode gemmer binære data via en SQL-sætning - det går aldrig godt.
Prøver jeg med nedenstående til at vise billedet, så får jeg følgende fejlmeddelelse:
ADODB.Field fejl '800a0c93'
Operation is not allowed in this context.
/mysql/showimage.asp, linje 48
Hvor der i linie 48 står følgende:
pic = objRS("filedata").GetChunk(data_lenght)
<% if not objRS.EOF then
data_lenght = objRS("filedata").ActualSize if data_lenght > 0 then pic = objRS("filedata").GetChunk(data_lenght) Response.BinaryWrite pic end if else response.redirect "1x1.gif" end if %>
Jeg tror faktisk at problemet er at den ikke gemmer hele filen i databasen, hvis jeg prøver nedenstående, så skriver den kun at længden er 10 og den skulle vel have været 85, når det er filens størrelse.
Din første fejl "ODBC driver does not support the requested properties" tyder på at ODBC-driveren ikke understøtter andet end SQL. Altså den understøtter ikke kommandoer som: RS.RecordCount RS.AbsolutePage mv. Det er noget l ... Jeg har selv lige installeret en MySQL lokalt på min PC og har endnu ikke fået den til at understøtte ovennævnte kommandoer - men alle kommandoerne virker med Access.
Du kan dog prøve at åbne recordsettet på nedenstående måde i stedet for. Den anvender jeg når jeg uploader billeder til database. (Access)
i stedet for denne linie: rs.Open "binarydb", strConn, 2, 2
Hvis det virker - hvad jeg tvivler på - så kan denne metode sikkert også løse problem nr. 2.
Jeg tror desværre at problemet ligger i ODBC-driveren. Den understøtter ikke umiddelbart alle kommandoer lokalt - det vil jeg undersøge nærmere for jeg ved at den kan.
Det virker desværre heller ikke... det byder egentlig ikke noget hvordan filerne kommer ind i MySQL databasen, bare de kommer der ind på en eller anden måde, enten vha. FileSystemObject, upload, ADODB.Stream eller hvad man nu kan finde på...
Opret de tre sider og så kan du uploade filer til mysql.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.