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!") %> ---------------------------------------------------------------
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.