webForumDet fria alternativet
Logga in / Bli medlem

Problem ! (multipart/form-data skriva till databas)

ASP

5 svar · 342 visningar · startad av El M@cho

Medlem sedan mars 20015 inlägg
Trådstart#1

Har följande problem:
Försöker skapa en uppladdnings funktion där man via ett formulär ska skicka uppgifter till en databas (namn, adress mm) samtidigt som man ska kunna ladda upp en bild.

Var för sig är det inga problem - databasen uppdateras med textuppgifterna jag önskar
(<form method="post" action="add.asp"> ) och när jag använder scripet för bild uppladdning fungerar det
(<form name="UploadForm" action="add.asp" enctype="multipart/form-data" method="post"> ).

Men när jag kombinerar detta med (action="add.asp") uppstår problem - uppgifterna i databasen uppdateras ej!

H J Ä L P

Medlem sedan mars 20015 inlägg
#2

Ursäkta!

Det ska inte stå action="add.asp"

utan

enctype="multipart/form-data"

där jag beskriver när problemet uppstår!!!

Medlem sedan dec. 19996 721 inlägg
#3

Tänk på att du inte kan använda request.form när du laddar upp filer. Du måste använda uppladdningsobjektets motsvarighet. Visa gärna lite kod.

Medlem sedan mars 20015 inlägg
#4

Tack för ditt snabba inlägg.
Här kommer "lite kod" från add.asp:

<!-- #include virtual="adovbs.inc" -->
<%
Dim MyPath
MyPath = Server.MapPath("db1.mdb")
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open ("driver={Microsoft Access Driver (*.mdb)};dbq=" & MyPath)

Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM personal"

RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

RecSet.AddNew

RecSet("namn") = Request.Form("namn")
RecSet("epost") = Request.Form("epost")
RecSet("bild1") = Request.Form("bild1")

RecSet.Update
RecSet.Close
Connect.Close
%>

<%
' Author Philippe Collignon
' Email PhCollignon@email.com

Response.Expires=0
Response.Buffer = TRUE
Response.Clear
'Response.BinaryWrite(Request.BinaryRead(Request.TotalBytes))
byteCount = Request.TotalBytes
'Response.BinaryWrite(Request.BinaryRead(varByteCount))

RequestBin = Request.BinaryRead(byteCount)
Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")

BuildUploadRequest RequestBin

'email = UploadRequest.Item("email").Item("Value")

contentType = UploadRequest.Item("bild1").Item("ContentType")
filepathname = UploadRequest.Item("bild1").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
value = UploadRequest.Item("bild1").Item("Value")

'Create FileSytemObject Component
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")

'Create and Write to a File
pathEnd = Len(Server.mappath(Request.ServerVariables("PATH_INFO")))-14
' Set MyFile = ScriptObject.CreateTextFile(Left(Server.mappath(Request.ServerVariables("PATH_INFO")),pathEnd)&filename)
Set MyFile = ScriptObject.CreateTextFile(Server.mappath("/image/"&filename))
response.write(Server.mappath(filename))

For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next

MyFile.Close
%>

<!--#include virtual="/show.asp"-->
</body>
</html>

Medlem sedan dec. 19996 721 inlägg
#5

Det verkar inte vara all kod, eller saknas en include?

I vilket fall som helst så ska du byta ut alla request.form("blablabla") till UploadRequest.Item("blablabla").Item("Value")

Kör uppladdningsdelen i skriptet före den andra delen, så att UploadRequest hinner skapas.

Medlem sedan mars 20015 inlägg
#6

Tack så mycket !
Jag ska se om det hjälper.

258 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)