Macce, har testat din kod men det funkar ej....
Men eftersom har redan kommit en bit med "Overrides uploadskript" som är helt ok tycker jag, tänker också utveckla den vidare.
Har lyckats att spara i databas (som text) både laddade filen och andra formulärelement.
Har testat skriptet både på https://www.24-7webhosting.com som kör (Linux och Chilli Asp komp),
samt på https://www.swede.com (Win2000 Server) funkar helt ok...
Det är 3 saker som måste fixas innan är skriptet fult användbar:
1. Kontroll av bildstorlek (bild mindre än 250k) och bildtyp tex jpeg, gif.
2. Skapa ett bildnamns-generator för att undvika att två stycken personer kan ladda upp en bild med samma namn.
3. Tillåta att formuläret ska skickas och sparas i databas oavsett om jag har valt att lada bild eller ej. Eftersom det är ett blandat formulär som har andra formulärelement (namn, email osv…), och jag har inte behöv att alltid ladda filer ibland det räcker bara med andra formulärelement som namn, email….
Så långt har jag kommit med koden som funkar, det skulle vara trevlig om vi kan modifiera koden och lägga till ovannämnda funktioner.
Exempel på kod som är testat och funkar:
Default.asp
-----------------------------------------------------------------------------------
<html>
<head>
<title>Ladda upp fil</title>
</head>
<body>
<form method="post" action="../upload/outputfile.asp" enctype="multipart/form-data">
\<input type="text" name="namn"\>\<br\>
\<input type="text" name="email"\>\<br\>
\<input type="file" name="blob"\>\<br\>
\<input type="submit" value="Ladda upp, yo!"\>
</form>
</body>
</html>
-----------------------------------------------------------------------------------
outputfile.asp
-----------------------------------------------------------------------------------
<html>
<head>
<title>Upload</title>
</head>
<body>
<%
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
'Exempel på hur man kan 'plocka ner' andra forumlärelement
namn = UploadRequest.Item("namn").Item("Value")
email = UploadRequest.Item("email").Item("Value")
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")
'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(filename))
For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close
response.write "<b>Filens sökväg:</b> " & Server.mappath(filename) & "<br>"
response.write "<b>Filnamn:</b> " & filename & "<br><br>"
response.write "<img src=""" & filename & """>"
response.write "<b>Filens email:</b> " & email & "<br>"
response.write "<b>Filens namn:</b> " & namn & "<br>"
namn = UploadRequest.Item("namn").Item("Value")
email = UploadRequest.Item("email").Item("Value")
'spara i databas
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0; "&\_
"Data Source="&Server.MapPath("/lada/test.mdb")
SQLStmt = "INSERT INTO lada (namn, email, filename) "
SQLStmt = SQLStmt & "VALUES('" & namn & "','" & email & "', '" & filename & "') "
Set RS = Connection.Execute(SQLStmt)
Connection.Close
%>
' upload.asp behövs ej modifieras
<!--#include file="../upload/upload.asp"-->
</body>
</html>