webForumDet fria alternativet

Problem med upload

9 svar · 123 visningar · startad av andreas_lindh

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#1

Jag kör det här scriptet som laddar upp en fil och ska lägga in sökväg och en beskrivning i en databas.

Får ett felmeddelande.
Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] Field 'newsletter.Beskrivning' cannot be a zero-length string.

/vg/upload/upload2.asp, line 30

Är det någon som kan se vad som är fel?

<%	@EnableSessionState	= False %>
<%	Option Explicit %>
<%	Response.Expires	= 0 %>

<%
	Dim UPLOAD_PATH
	UPLOAD_PATH	= Server.MapPath("files")

	Dim g_oFso, g_oFolder, g_oFile
	Set g_oFso	= Server.CreateObject("Scripting.FileSystemObject")
	Set g_oFolder	= g_oFso.getFolder(UPLOAD_PATH)

	If (Request.ServerVariables("REQUEST_METHOD") = "POST") Then
	   Dim g_oUpload
	   Set g_oUpload= get_upload_files()

	   Dim fpos, fcontent, filnamn, oconn, sql, datum, beskrivning
	   fcontent= g_oUpload("upload").Item("content")

	   Set g_oFile= g_oFso.CreateTextFile(UPLOAD_PATH & "/" & extract_filename(g_oUpload("upload").Item("filename")))
		filnamn = extract_filename(g_oUpload("upload").Item("filename"))
		datum = date
		beskrivning= g_oUpload("upload").Item("beskrivning")
		
		Set oConn = Server.CreateObject("ADODB.Connection")
 		oConn.open "tibroik"
		sql = "Insert into newsletter (datum, filnamn, beskrivning)"
 		sql = sql & " Values ('" & datum & "', '" & filnamn & "', '" & beskrivning & "')"
		response.write sql
		oConn.Execute(sql)
		oconn.close

	   For fpos = 1 to LenB(fcontent)
	   g_oFile.Write chr(AscB(MidB(fcontent, fpos, 1)))
	   Next
	   g_oFile.Close: Set g_oFile	= Nothing

	   Response.Redirect Request.ServerVariables("SCRIPT_NAME")
	End If

        Response.Write "<html><body bgcolor=""#eaeaea"">"

        Response.Write "<table border=0 align=center width=220>"
        Response.Write "<tr><td align=center><font size=""1"" face=""Verdana"" color=""#A0A0A4"" style=""font-size:10px;"">"
        Response.Write "Här kan du lägga upp egna dokument.</td></tr><tr><td><hr></td></tr><tr><td><table width=220 border=0 align=center>" 
        Response.Write "<tr><td align=left><font size=""1"" face=""Verdana"" color=""#A0A0A4"" style=""font-size:10px;""><b>Filnamn</b><br></td>"
        Response.Write "<td align=right><font size=""1"" face=""Verdana"" color=""#A0A0A4"" style=""font-size:10px;""><b>Filstorlek</b><br></td></tr>"
	For Each g_oFile In g_oFolder.Files
		Response.Write "<tr><td align=left><font size=""1"" face=""Verdana"" color=""#A0A0A4"" style=""font-size:10px;""> <a href=""db/files/" & g_oFile.Name & """ target=""new"">" & g_oFile.name & "</a></td>"
                Response.Write "<td align=right><font size=""1"" face=""Verdana"" color=""#A0A0A4"" style=""font-size:10px;""> " & CInt(((g_oFile.Size/1024) + 0.55)) & " kB </td></tr>"
	Next
	Response.Write "</table></td></tr><tr><td><hr></td></tr>"
	Response.Write "<tr><td><form name=""frmUpload"" method=""post"" enctype=""multipart/form-data"" action=""" & Request.ServerVariables("SCRIPT_NAME") & """>"
	Response.Write "<font size=""1"" face=""Verdana"" color=""#A0A0A4"" style=""font-size:10px;"">1: &nbsp;Beskrivning:<input type=""text"" name=""beskrivning"" class=""knapp""><br><input type=""file"" name=""upload"" class=""knapp""> </td></tr>"
        	Response.Write "<tr><td><font size=""1"" face=""Verdana"" color=""#A0A0A4"" style=""font-size:10px;"">2: &nbsp;<input type=""submit"" class=""knapp"" value=""Submit!""></td></tr>"
	Response.Write "</table></body></html>"

%>
<%
	Function get_upload_files()
	Dim	upload_object, request_binaries
	Dim position_start, position_end
	Dim boundary, boundary_pos

	Set upload_object= Server.CreateObject("Scripting.Dictionary")
	request_binaries= Request.BinaryRead(Request.TotalBytes)
	position_start= 1
	position_end= InstrB(position_start, request_binaries, get_byte_string(chr(13)))
	boundary	= MidB(request_binaries, position_start, (position_end - position_start))
	boundary_pos= InstrB(1, request_binaries, boundary)

	Do Until (boundary_pos = InstrB(request_binaries, boundary & get_byte_string("--")))
		If Not(Response.IsClientConnected) Then Response.End

		Dim name, pos_file

		position_start= (InstrB(InstrB(boundary_pos, request_binaries, get_byte_string("Content-Disposition")), request_binaries, get_byte_string("name=")) + 6)
		position_end= InstrB(position_start, request_binaries, get_byte_string(chr(34)))

		name= get_string(MidB(request_binaries, position_start, (position_end - position_start)))
		pos_file= InstrB(boundary_pos, request_binaries, get_byte_string("filename="))

		If  ((pos_file <> 0) AND (pos_file < InstrB(position_end, request_binaries, boundary))) Then
			upload_object.Add name, Server.CreateObject("Scripting.Dictionary")

			position_start= (pos_file + 10)
			position_end= InstrB(position_start, request_binaries, get_byte_string(chr(34)))
			upload_object.item(name).Add "filename", get_string(MidB(request_binaries, position_start, (position_end - position_start)))

			position_start= (InstrB(position_end, request_binaries, get_byte_string("Content-Type:")) + 14)
			position_end= InstrB(position_start, request_binaries, get_byte_string(chr(13)))
			upload_object.item(name).Add "content-type", get_string(MidB(request_binaries, position_start, (position_end - position_start)))

			position_start= (position_end + 4)
			position_end= InstrB(position_start, request_binaries, boundary) - 2
			upload_object.item(name).Add "size", ((position_end - position_start))
			upload_object.item(name).Add "content", MidB(request_binaries, position_start, (position_end - position_start))
			End If
			boundary_pos	= InstrB(boundary_pos + LenB(boundary), request_binaries, boundary)
		Loop

		Set get_upload_files = upload_object
	End Function

	Function get_byte_string(str)
		Dim cnt
		For cnt = 1 to Len(str)
			get_byte_string	= get_byte_string & chrB(AscB(Mid(str, cnt, 1)))
		Next
	End Function

	Function get_string(str)
		Dim cnt
		For cnt = 1 to LenB(str)
			get_string	= get_string & chr(AscB(MidB(str, cnt, 1))) 
		Next
	End Function

	Function extract_filename(filename)
		extract_filename	= Right(filename, Len(filename) - InStrRev(filename, "\", -1, 1))
	End Function
%>
PaceMedlem sedan juni 20019 024 inlägg
#2

Field 'newsletter.Beskrivning' cannot be a zero-length string.

Fältet "Beskrivning" i tabellen newsletter måste ha ett värde. SQL satsen skickar alltså inte med någon beskrivning.

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

jorgenMedlem sedan feb. 20012 412 inlägg
#3

Hej, den variableln du försöker lägga in i 'newsletter.Beskrivning' är tom. Vill du kunna ha fältet tomt så får du ändta fältet i databasen till tillåt noll-längd.

mvh Jörgen :)

------------------
.: Det är jag som ger svaren och det är Ni som ställer frågorna :.

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#4

Jag vet att det är tomt.
Det ska inte vara det för att jag har skrivit något i det fältet.

jorgenMedlem sedan feb. 20012 412 inlägg
#5

Kolla så att namnet på formulärfältet stämmer överens med:

g_oUpload("upload").Item("beskrivning")

mvh jörgen :)

------------------
.: Det är jag som ger svaren och det är Ni som ställer frågorna :.

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#6

Det stämmer. Däremot vet jag inte om den här raden är rätt:

beskrivning= g_oupload("upload").Item("beskrivning")
jorgenMedlem sedan feb. 20012 412 inlägg
#7

Om du lägger detta längst upp på sidan:

response.write "<p>Innehåll: "& request.form("beskrivning") &"</p>"

vad skriver den ut då?

mvh Jörgen :)

------------------
.: Det är jag som ger svaren och det är Ni som ställer frågorna :.

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#8

Den ger inte tillbaka någonting då.

jorgenMedlem sedan feb. 20012 412 inlägg
#9

Heter verkligen formulärfältet "beskrivning"?

------------------
.: Det är jag som ger svaren och det är Ni som ställer frågorna :.

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#10

Ja.

139 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)