Avatar billede wilweb Nybegynder
18. august 2005 - 13:32 Der er 9 kommentarer og
2 løsninger

fejl i upload uden komponenter

Jeg har tidligere haft dette spørgsmål oppe og vende på exp.dk men fik det ikke løst!
Jeg vil gerne uploade et billede, samtidigt med at jeg skriver til en access database.

Jeg får dog denne fejl, er der nogen der kan fortælle mig hvad jeg gør galt?

Fejltype:
Request-objekt, ASP 0207 (0x80004005)
Request.Form-samling kan ikke bruges, når BinaryRead er kaldt.
line 99 = strmd = request.form("y_tekst")

her er min kode:

<%
Response.expires = 0
Response.expiresabsolute = Now() - 1
Response.addHeader "pragma", "no-cache"
Response.addHeader "cache-control", "private"
Response.CacheControl = "no-cache"
response.buffer = true
Response.Clear

aid= request.QueryString("id")
key = request.querystring("key")

If key = 1 then
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest(RequestBin)
contentType = UploadRequest.Item("blob").Item("ContentType")
filepathname = UploadRequest.Item("blob").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
value = UploadRequest.Item("blob").Item("Value")
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(Server.mappath("../gfx/nyhed/"&filename))
For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close   
Sub BuildUploadRequest(RequestBin)
  PosBeg = 1
  PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
  boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
  boundaryPos = InstrB(1,RequestBin,boundary)
  Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
  Dim UploadControl
  Set UploadControl = CreateObject("Scripting.Dictionary")
  Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))
  Pos = InstrB(Pos,RequestBin,getByteString("name="))
  PosBeg = Pos+6
  PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
  Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
  PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename="))
  PosBound = InstrB(PosEnd,RequestBin,boundary)
    If  PosFile<>0 AND (PosFile<PosBound) Then
    PosBeg = PosFile + 10
    PosEnd =  InstrB(PosBeg,RequestBin,getByteString(chr(34)))
    FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
    UploadControl.Add "FileName", FileName
    Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
    PosBeg = Pos+14
    PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
    ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
    UploadControl.Add "ContentType",ContentType
    PosBeg = PosEnd+4
    PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
    Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
    Else
    Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
    PosBeg = Pos+4
    PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
    Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
    End If
    UploadControl.Add "Value" , Value   
    UploadRequest.Add name, UploadControl   
    BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
  Loop
End Sub
Function getByteString(StringStr)
  For i = 1 to Len(StringStr)
  char = Mid(StringStr,i,1)
  getByteString = getByteString & chrB(AscB(char))
  Next
End Function
Function getString(StringBin)
  getString =""
  For intCount = 1 to LenB(StringBin)
  getString = getString & chr(AscB(MidB(StringBin,intCount,1)))
  Next
End Function


End if
%>
<html>
<head>
<title></title>
<script language="JavaScript">
  function SetCookie (name, value) {var argv = SetCookie.arguments;var argc = SetCookie.arguments.length;var expires = (argc > 2) ? argv[2] : null;var path = (argc > 3) ? argv[3] : null;var domain = (argc > 4) ? argv[4] : null;var secure = (argc > 5) ? argv[5] : false;document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : "")}
  function set_name(form) {var expdate = new Date ();expdate.setTime (expdate.getTime() + (24 * 60 * 60 * 1000 * 31));
  var tekst = form3.y_tekst.value;SetCookie ("tekst", tekst, expdate)
  }
</script>
</head>
<body bgcolor="#FFFFFF" leftmargin=0 topmargin=0 marginheight=0 marginwidth=0>
<!--#include file="../conn/nyhed.asp"-->
<%

if key = 1 then
strmd = request.form("y_tekst")
'indsæt i db
        'SQL sætning opbygges
        Dim strSQL
        strSQL = "Insert into nyheder ("
        strSQL = strSQL & "billedelink, "
        strSQL = strSQL & "strmd, "
        strSQL = strSQL & "strdato)"
       
        strSQL = strSQL & "values( "
        strSQL = strSQL & "'nyhed/" & filename & "', "
        strSQL = strSQL & "'" & strmd & "', "
        strSQL = strSQL & "#" & Date() & "#)"
        Conn.Execute(strSQL)
'response.Write(strSQL)
Response.Clear
Response.Redirect "../nyhed.asp"
end if
%>
<form METHOD="Post" ENCTYPE="multipart/form-data" ACTION="upload_nyhed.asp?key=1" id="form3" name="form3" onSubmit="return set_name(this.form);">
  <select name="y_tekst">
    <option value="Januar">Januar</option>
    <option value="Februar">Februar</option>
    <option value="Marts">Marts</option>
    <option value="April">April</option>
    <option value="Maj">Maj</option>
    <option value="Juni">Juni</option>
    <option value="Juli">Juli</option>
    <option value="August">August</option>
    <option value="September">September</option>
    <option value="Oktober">Oktober</option>
    <option value="November">November</option>
    <option value="December">December</option>
  </select>
  <br>
  <input TYPE="file" NAME="blob" class="input">
  <input TYPE="submit" value="UDFØR" NAME="Enter">
</form>
</BODY>
</HTML>
Avatar billede softspot Forsker
18. august 2005 - 14:11 #1
Jeg ved godt det ikke løser dit problem og at fejlen jo siger det samme, men du kan ikke læse i request.form-collection efter du har læst post-data med request.BinaryRead. Enten læser du med Form ellers læser du med BinaryRead. Det er dit problem.

Når det så er sagt, så burde du jo kunne finde værdien af formfeltet "y_tekst" via det Dictionary-objekt du har oprettet (UploadRequest), altså med

strmd = UploadRequest("blob").Item("y_tekst")

...skulle jeg mene :)
Avatar billede softspot Forsker
18. august 2005 - 14:14 #2
Eller rettere, så skal du nok bruge

strmd = uploadRequest.Item("y_tekst")

for "blob" er jo den fil du uploader... sorry.
Avatar billede wilweb Nybegynder
18. august 2005 - 17:04 #3
det er da værd at prøve, forløbig tak...
Avatar billede wilweb Nybegynder
18. august 2005 - 17:09 #4
hummm!
jeg prøvede dette her:
strmd = uploadRequest.Item("y_tekst")

istedet for denne:
strmd = request.form("y_tekst")

jeg fik denne fejl:

Der opstod en Microsoft VBScript-kørselsfejl (0x800A01C2)
Antallet af argumenter er forkert eller egenskabstildelingen er ugyldig: 'strmd'
Avatar billede softspot Forsker
18. august 2005 - 17:50 #5
Det kan være du skal bruge

strmd = uploadRequest.Item("y_tekst").Item("Value")

Jeg havde ikke lige bemærket at den lavede et Dictionaryobjekt til hvert felts egenskaber.
Avatar billede softspot Forsker
21. august 2005 - 15:32 #6
Kom du videre med problemet?
Avatar billede wilweb Nybegynder
09. oktober 2005 - 11:47 #7
Ups! undskyld jeg havde lige glemt dette spørgsmål, men nej, desværre jeg fik det ikke løst. Ellere retter sagt jeg uploader billedet og redirecter til en ny side hvor jeg kan skrive en text til databasen.
Sikkert ikke fornuftigt, men men men..
Avatar billede softspot Forsker
09. oktober 2005 - 15:59 #8
Hvis det fungerer er det vel godt nok :)

Du kan lukke spørgsmålet ved at smide et svar og acceptere dig selv...
Avatar billede wilweb Nybegynder
29. oktober 2005 - 08:51 #9
hvor flovt jeg har igen glemt dette spørgsmål.
smid et svar softspot så får du lidt for dit forsøg, for det er jo altid nice når der er hjælp.
Avatar billede softspot Forsker
29. oktober 2005 - 12:11 #10
Det er fint nok, jeg regnede med at det var "lukket"...
Avatar billede softspot Forsker
06. november 2005 - 22:31 #11
Tak for point :)
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