Avatar billede none01 Nybegynder
20. august 2005 - 21:04 Der er 10 kommentarer og
1 løsning

Mit upload script vil vist ikke opdatere?

Hej.
Hvis jeg prøver at uploade et billede, med mit upload script kommer denne fejl:

ADODB.Recordset error '800a0cb3'

Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype.

/upload.asp, line 106

Det er mit script:
<%
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


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

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,"\"))

Dim AllowedExt(2)
AllowedExt(0) = "jpg"
AllowedExt(1) = "gif"
AllowedExt(2) = "png"
Extension = Right(Filename, Len(Filename) - InStrRev(Filename, ".", -1, 1))
Godkendt = 0
FileTypes = ""
For each x in AllowedExt
If FileTypes = "" Then
FileTypes = x
Else
FileTypes = FileTypes + ", " + x
End If
If LCase(Extension) = LCase(x) Then Godkendt=1
Next

If Godkendt = 1 then
value = UploadRequest.Item("blob").Item("Value")
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(Server.mappath(""&filename))
For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close

Set con = Server.CreateObject("ADODB.Connection")
con.Open "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=testing;UID=root;PASSWORD=root"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM upload",con
rs.AddNew
rs("file") = filename
rs.Update
rs.Close
Set rs = Nothing
con.Close
Set con = Nothing
Response.Clear
Response.Redirect "upload_list.asp"
End If
End if
%>

<html>
<head>
<title>Upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<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));
}
</script>
</head>
<body bgcolor="#FFFFFF" leftmargin=0 topmargin=0 marginheight=0 marginwidth=0>
<br>
<span style="position: absolute; top:+10px;left: +10px;letter-spacing: +0px;font: 20px Verdana, Arial;font-weight: bold;">Upload billede</span>
<p> </p>
<table width="900" height="76" border="0">
<tr>
<td width="369" align="right"><table width="329" border="0">
<tr>
<td height="23"><font size="2">Find din billede og tryk p&aring; upload: </font></td>
</tr>
</table>
<br></td>
<td width="515"><table align="left">
<tr>
<td width="311"><form METHOD='Post' ENCTYPE='multipart/form-data' ACTION='upload.asp?key=1' id='form3' name='form3' onSubmit="return set_name(this.form);">
<br>
<input type="file" name="blob" class="input">
<br>
<input TYPE="submit" value="Upload" NAME="Enter">
</form></td>
</tr>
</table></td>
</tr>
</table>
<% If Godkendt = 0 And Key = 1 Then Response.Write("Der kan kun uploades filer som slutter på: " & FileTypes) %>
</body>
</html>
Avatar billede busschou Praktikant
20. august 2005 - 21:10 #1
du kan læse her om at vælge en lock type som passer dig :o)
http://www.w3schools.com/ado/prop_rs_locktype.asp
Avatar billede busschou Praktikant
20. august 2005 - 21:15 #2
jeg vil mene du skal benytte nr 3 eller 4
Avatar billede none01 Nybegynder
20. august 2005 - 22:20 #3
jeg skrev rs.LockType=adLockBatchOptimistic efter Set rs = Server.CreateObject("ADODB.Recordset") og jeg får nu denne fejl:

ADODB.Recordset error '800a0bb9'

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

/upload.asp, line 105
Avatar billede none01 Nybegynder
20. august 2005 - 22:22 #4
Den samme fejl kommer hvis jeg bruger adLockOptimistic
Avatar billede busschou Praktikant
21. august 2005 - 08:35 #5
hmm prøv evt
rs.LockType = 3
i stedet for navnet så nummeret altså
Avatar billede none01 Nybegynder
21. august 2005 - 18:42 #6
Når jeg sætter den til 3 får jeg denne fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Driver Manager] Invalid string or buffer length

/upload.asp, line 109

og linie 109 er:

rs.Update

og hvis jeg sætter den til 4 for jeg ingen fejl, men der bliver ikke noget gemt i databasen.
Avatar billede ameq Nybegynder
21. august 2005 - 19:02 #7
svar fra irc
Avatar billede busschou Praktikant
21. august 2005 - 19:27 #8
øhh hvad er irc ? det er da ikke eksperten?
Reglerne siger
1) at løsningen skal være tilgængelig på eksperten
2) at der ikke må gives point for noget som er løst uden om eksperten

så hrmf herfra
Avatar billede none01 Nybegynder
21. august 2005 - 19:54 #9
Ja ehm... ameq sagde at jeg skulle ændre det til sql istedet for at bruge asp.
Så jeg slettede det hele og bare smed:

con.execute("insert into upload ([file]) values '" & filename & "'")

ind.
Avatar billede busschou Praktikant
21. august 2005 - 19:59 #10
http://www.eksperten.dk/regler.phtml
$2,1,13 siger
"Det er ikke tilladt at tildele point for en opgave løst uden om Eksperten.dk (f.eks. opgaver løst via mail, ICQ eller telefon), eller blot et andet spørgsmål på Eksperten.dk (lovlig pointoverførsel undtaget)."
---

ikke for at virke som en regel rytter specielt, men synes det virker provokerende når man forsøger at hjælpe i sin fritid og så blot møder en slut kommentar som den 21/08-2005 19:02:47
ameq har end ikke deltaget i spørgsmålet før, hvorfor man måske hvis man var meget skeptisk kunne tro at begge brugere måske er den samme eller har noget point overførsel kørende....
Men ja, det er bare sådan jeg opfatter det når der kommer sådan et svar dumpende ind fra højre
Avatar billede none01 Nybegynder
21. august 2005 - 20:01 #11
Jeg undskylder mig mange gange for det, og det vil ikke ske igen.
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