Avatar billede bruhnsweb Nybegynder
15. februar 2004 - 12:38 Der 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



Const nForReading = 1
Const nForWriting = 2
Const nForAppending = 8

' 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!")
%>
---------------------------------------------------------------
Avatar billede keysersoze Ekspert
15. februar 2004 - 13:04 #1
RS_dbase("kategori") = oUpload.form("kategori")
Avatar billede websam Nybegynder
15. februar 2004 - 13:45 #2
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)

/Websam
Avatar billede bruhnsweb Nybegynder
15. februar 2004 - 14:13 #3
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


Const nForReading = 1
Const nForWriting = 2
Const nForAppending = 8

' 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>


-----------------------------------------------------------------------------------
Avatar billede keysersoze Ekspert
15. februar 2004 - 14:58 #4
prøv at udskriv "l" og se om det er et tal eller hvad det er
Avatar billede bruhnsweb Nybegynder
15. februar 2004 - 15:00 #5
Det er bare mærkeligt - Den kom først da jeg skrev oUpload.form
Avatar billede keysersoze Ekspert
15. februar 2004 - 15:09 #6
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.
Avatar billede bruhnsweb Nybegynder
15. februar 2004 - 15:14 #7
----------------------------------------------------------------
' 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'

Type mismatch: '[string: "logo-1"]'

/saveuploads_serie.asp, line 47
Avatar billede keysersoze Ekspert
15. februar 2004 - 15:19 #8
du kan ikke udskrive værdien af l før den er lavet - så du bliver jo nødt til at udskrive EFTER din len;

l = len(fold.name)-4
response.write l
response.end

og hvis vi så sætter en response.end på kan vi se om det er på første gennemløb den føjler eller hvad der sker
Avatar billede bruhnsweb Nybegynder
15. februar 2004 - 15:34 #9
6
Avatar billede keysersoze Ekspert
15. februar 2004 - 15:35 #10
så prøv;

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
Avatar billede bruhnsweb Nybegynder
15. februar 2004 - 15:38 #11
6

Microsoft VBScript runtime error '800a01a8'

Object required

/saveuploads_serie.asp, line 70
----------------------------------------------------------------------------
Linie 70: RS_dbase("kategori") = oUpload.form("kategori")
Avatar billede keysersoze Ekspert
15. februar 2004 - 15:50 #12
det er fordi du lukker objektet før der forespørges. flyt

Set oFile = Nothing
Set oUpload = Nothing

ned lige før den response.write
Avatar billede bruhnsweb Nybegynder
15. februar 2004 - 16:01 #13
1
6

Microsoft VBScript runtime error '800a01b6'

Object doesn't support this property or method: 'form'

/saveuploads_serie.asp, line 67
Avatar billede keysersoze Ekspert
15. februar 2004 - 16:11 #14
RS_dbase("kategori") = oUpload.Fields("kategori")
Avatar billede bruhnsweb Nybegynder
15. februar 2004 - 16:21 #15
Object doesn't support this property or method: 'Fields'
:o(
Avatar billede keysersoze Ekspert
15. februar 2004 - 16:27 #16
hmmm

oUpload.Fields("kategori").value

måske... ellers er jeg på bar bund. Kender ikke til det upload-komponent
Avatar billede bruhnsweb Nybegynder
15. februar 2004 - 16:28 #17
Næhh - Jeg finder en anden løsning... :o(
Avatar billede keysersoze Ekspert
15. februar 2004 - 16:33 #18
ja - prøv at kig på deres dokumentation, måske står der noget der... og husk så lige at fjerne mine udkommenteringer i din for-løkke
Avatar billede bruhnsweb Nybegynder
15. februar 2004 - 16:40 #19
ok tak...
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester