15. februar 2004 - 12:38Der er
18 kommentarer og 1 løsning
Binary read?
Hej Eksperter
Jeg har et problem med mit frække billedescript :o(
Brugeren skal vælge en kategori til billedet samtidig med at han uploader, men jeg kan ikke bruge request.form - for så melder den fejl.. Hvad skal jeg så bruge?
//Bruhn
--------------------------------------------------------------- Mit script: --------------------------------------------------------------- <!-- #include file="databaseopkald.inc" --> <!-- #include file="adovbs.inc" --> <!--#INCLUDE FILE="upload.class"--> <% Dim oUpload Dim oFile Dim sFileName Dim oFSO Dim sPath Dim sNewData Dim nLength Dim bytBinaryData
' grab the uploaded file data Set oUpload = New clsUpload Set oFile = oUpload("File1")
' parse the file name sFileName = oFile.FileName If Not InStr(sFileName, "\") = 0 Then sFileName = Mid(sFileName, InStrRev(sFileName, "\") + 1) End If
' Convert the binary data to Ascii bytBinaryData = oFile.BinaryData nLength = LenB(bytBinaryData) For nIndex = 1 To nLength sNewData = sNewData & Chr(AscB(MidB(bytBinaryData, nIndex, 1))) Next
' Save the file to the file system sPath = Server.MapPath("../www/pictures/serier") & "\"
hoejste_nummer = "0" Set ROM_fs = Server.CreateObject( "Scripting.FileSystemObject" ) Set ROM_Folder = ROM_fs.GetFolder(sPath ) For each fold in ROM_Folder.files l = len(fold.name)-4 fil = left(fold.name,l) if int(fil) > int(hoejste_nummer) then hoejste_nummer = fil end if next
sFileName = int(hoejste_nummer) + 1 & ".jpg"
Set oFSO = Server.CreateObject("Scripting.FileSystemObject") oFSO.OpenTextFile(sPath & sFileName, nForWriting, True).Write sNewData Set oFSO = Nothing
Set oFile = Nothing Set oUpload = Nothing
Set RS_dbase = Server.CreateObject("ADODB.RecordSet") RS_dbase.open "Select * From [serier_billeder] Order by id", Conn_serier, 1, 3
'Tilføjer tekst til databasen RS_dbase.Addnew RS_dbase("filnavn") = sFileName RS_dbase("serie_id") = Request.QueryString("id") RS_dbase("kategori") = request.form("kategori") RS_dbase.Update
Response.write("Billedet er registreret i databasen!") %> ---------------------------------------------------------------
Det er fordi når du benytter en multipart form skal der som keysersoze skriver bruges oUpload.Form("DitFelt") istedet for Request.Form("DitFelt") Ellers vil den komme med fejl :o)
Nu kommer den pludslig med denne her fejl... Hvad har den med det hele at gøre... ??
----------------------------------------------------------------------------------- Microsoft VBScript runtime error '800a000d'
Type mismatch: 'fil'
/saveuploads_serie.asp, line 45 -----------------------------------------------------------------------------------
Koden: ----------------------------------------------------------------------------------- <!-- #include file="databaseopkald.inc" --> <!-- #include file="adovbs.inc" --> <!--#INCLUDE FILE="upload.class"--> <% Dim oUpload Dim oFile Dim sFileName Dim oFSO Dim sPath Dim sNewData Dim nLength Dim bytBinaryData
' grab the uploaded file data Set oUpload = New clsUpload Set oFile = oUpload("File1")
' parse the file name sFileName = oFile.FileName If Not InStr(sFileName, "\") = 0 Then sFileName = Mid(sFileName, InStrRev(sFileName, "\") + 1) End If
' Convert the binary data to Ascii bytBinaryData = oFile.BinaryData nLength = LenB(bytBinaryData) For nIndex = 1 To nLength sNewData = sNewData & Chr(AscB(MidB(bytBinaryData, nIndex, 1))) Next
' Save the file to the file system sPath = Server.MapPath("../www/pictures/serier") & "\"
hoejste_nummer = "0" Set ROM_fs = Server.CreateObject( "Scripting.FileSystemObject" ) Set ROM_Folder = ROM_fs.GetFolder(sPath ) For each fold in ROM_Folder.files l = len(fold.name)-4 fil = left(fold.name,l) if int(fil) > int(hoejste_nummer) then hoejste_nummer = fil end if next
sFileName = int(hoejste_nummer) + 1 & ".jpg"
Set oFSO = Server.CreateObject("Scripting.FileSystemObject") oFSO.OpenTextFile(sPath & sFileName, nForWriting, True).Write sNewData Set oFSO = Nothing
Set oFile = Nothing Set oUpload = Nothing
Set RS_dbase = Server.CreateObject("ADODB.RecordSet") RS_dbase.open "Select * From [serier_billeder] Order by id", Conn_serier, 1, 3
'Tilføjer tekst til databasen RS_dbase.Addnew RS_dbase("filnavn") = sFileName RS_dbase("serie_id") = Request.QueryString("id") RS_dbase("kategori") = oUpload.form("kategori") RS_dbase.Update
Response.write("Billedet er registreret i databasen!") %> <font face="Trebuchet MS" size="2"> <a href="upload/default_serie.asp?id=<%=Request.QueryString("id")%>" style="text-decoration: none"> <font color="#000000">Upload flere billeder til samme serie.</font></a></font>
men hvad giver l når du udskriver det - måske er det slet ikke et tal og så vil din left jo ikke fungere. På det tidspunkt i scriptet er den jo ligeglad med om du bruger oUpload eller request.
---------------------------------------------------------------- ' Save the file to the file system sPath = Server.MapPath("../www/pictures/serier") & "\"
response.write l
hoejste_nummer = "0" Set ROM_fs = Server.CreateObject( "Scripting.FileSystemObject" ) Set ROM_Folder = ROM_fs.GetFolder(sPath ) For each fold in ROM_Folder.files l = len(fold.name)-4 fil = left(fold.name,l) if int(fil) > int(hoejste_nummer) then hoejste_nummer = fil end if next ---------------------------------------------------------------- Så skriver den: Microsoft VBScript runtime error '800a000d'
For each fold in ROM_Folder.files l = len(fold.name)-4 response.write l & "<br>" 'fil = left(fold.name,l) 'if int(fil) > int(hoejste_nummer) then 'hoejste_nummer = fil 'end if next
/saveuploads_serie.asp, line 70 ---------------------------------------------------------------------------- Linie 70: RS_dbase("kategori") = oUpload.form("kategori")
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.