webForumDet fria alternativet

Upload form

22 svar · 693 visningar · startad av His Divine Shadow

His Divine ShadowMedlem sedan sep. 20004 079 inlägg
#1

I ett formulär som jag nu håller på och utvecklar vill jag att man ska kunna ladda upp en bild.
Hur gör jag detta, kan man ladda direkt in i en databas? Är det rekomenderat?

------------------
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.
http://forums.planetdivine-shadow.com

icaaqMedlem sedan okt. 20005 273 inlägg
#2

sök på upload.... eller dundas ....typ ;)

------------------

- Vet du vad det blir om en kille från Dalarna startar en tidning och en radiokanal?
- Nej.
- Mas-media.

mrblondeMedlem sedan aug. 20012 349 inlägg
#3

Det här är en väldigt vanlig fråga.
Testa att söka så får du upp hur mycket träffar som helst.
http://cgi.webforum.nu/wf/Forum11/HTML/000626.html

tex.

mvh mrblonde

------------------
calling me a motherfucker, saying he's gonna blow me away and blah, blah, blah, blah, blah.
National Blonde Day!

His Divine ShadowMedlem sedan sep. 20004 079 inlägg
#4

OK jag får denna felkod:

Request object error 'ASP 0207 : 80004005'

Cannot use Request.Form

/katalog/swe/adduser.asp, line 52

Cannot use Request.Form collection after calling BinaryRead.

såhär ser koden ut:

<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\data\WebData\katalog.mdb"
SQL = "SELECT * FROM Kat"
%>
<!-- #INCLUDE FILE = "../adovbs.inc"    -->
<%
' 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("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("/katalog/images/"&filename))
response.write(Server.mappath(filename)) 

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

MyFile.Close

%>
<!--#include file="upload.asp"-->
<%
	'create variable to hold email address
	  DIM Namn
	  namn = Request.Form("Namn")
	  
	  DIM Epost
	  Epost = Request.Form("Epost")
	  
	  DIM Naradress
	  Naradress = Request.Form("Naradress")
	  
	  DIM postnr
	  postnr = Request.Form("postnr")
	  
	  DIM ort
	  ort = Request.Form("ort")
	  
	  DIM Tel
	  Tel = Request.Form("Tel")
	  
	  DIM fax
	  fax = Request.Form("Fax")
	  
	  DIM www
	  www = Request.Form("www")
	  
	  DIM AmnesomrAde
	  AmnesomrAde = Request.Form("Amnesomrade")
	  
	  DIM Ovrigt_swe
	  Ovrigt_swe = Request.Form("Ovrigt_swe")
	  
	  DIM Ovrigt_fin
	  Ovrigt_fin = Request.Form("Ovrigt_fin")
	  
	  DIM password
	  password = Request.Form("password")

	  Dim objRec
	  Set objRec = Server.CreateObject("ADODB.Recordset")

	  objRec.Open "kat", connect, adOpenStatic , _
  	    adLockOptimistic, adCmdTable
   
Function Free(txt) 
If IsEmpty(txt) OR IsNull(txt) Then Exit Function
txt = Server.HTMLEncode(txt)
txt = Replace(Trim(txt), vbCrLf, "<br>")
Free = txt
End Function

objRec("ovrigt_swe") = Free(Ovrigt_swe)
objRec("ovrigt_fin") = Free(Ovrigt_fin)

	'create a new record
	  objRec.AddNew
	'set the field equal to the variable
   	  objRec("Namn")		= Namn
   	  objRec("Epost")		= Epost
   	  objRec("Naradress")	= Naradress
   	  objRec("Postnr")		= Postnr
   	  objRec("Ort")			= Ort
   	  objRec("Tel")			= Tel
   	  objRec("Fax")			= Fax
   	  objRec("www")			= www
   	  objRec("amnesomrade")	= Amnesomrade
   	  objRec("ovrigt_swe")	= Ovrigt_swe
   	  objRec("ovrigt_fin")	= Ovrigt_fin
   	  objRec("Password")	= Password
	'update the database with the new record
	  objRec.Update

	'close the database
	  objRec.Close
	  Set objRec = Nothing
	  

	'un-comment this line to point to your desired confirm page
	Response.Redirect("http://www.uniimport.fi/katalog/swe/kundLista.asp?sort=namn")

	'tell the user their account is added
	 ' Response.Write("User Added")
%>

Och filen upload.asp:

<%
' Author Philippe Collignon
' Email PhCollignon@email.com
Sub BuildUploadRequest(RequestBin)
'Get the boundary
PosBeg = 1
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
boundaryPos = InstrB(1,RequestBin,boundary)
'Get all data inside the boundaries
Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
'Members variable of objects are put in a dictionary object
Dim UploadControl
Set UploadControl = CreateObject("Scripting.Dictionary")
'Get an object name
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)
'Test if object is of file type
If PosFile<>0 AND (PosFile<PosBound) Then
'Get Filename, content-type and content of file
PosBeg = PosFile + 10
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
'Add filename to dictionary object
UploadControl.Add "FileName", FileName
Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
PosBeg = Pos+14
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
'Add content-type to dictionary object
ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
UploadControl.Add "ContentType",ContentType
'Get content of object
PosBeg = PosEnd+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
Else
'Get content of object
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
'Add content to dictionary object
UploadControl.Add "Value" , Value 
'Add dictionary object to main dictionary
UploadRequest.Add name, UploadControl 
'Loop to next object
BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
Loop

End Sub

'String to byte string conversion
Function getByteString(StringStr)
For i = 1 to Len(StringStr)
char = Mid(StringStr,i,1)
getByteString = getByteString & chrB(AscB(char))
Next
End Function

'Byte string to string conversion
Function getString(StringBin)
getString =""
For intCount = 1 to LenB(StringBin)
getString = getString & chr(AscB(MidB(StringBin,intCount,1))) 
Next
End Function
%>

------------------
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.
http://forums.planetdivine-shadow.com

LarsGMedlem sedan dec. 200012 464 inlägg
#5

Du måste använda uploadrequest i stället.

------------------
essentitia preter non sans multiplicandum

His Divine ShadowMedlem sedan sep. 20004 079 inlägg
#6

Äsch, jag fattar inte alls vad du menar med detta...
använda upload request istället för vad, var?
Upload request används ju visst på några ställen, då jag bytte ut request.form mot uploadrequest.form gick det inte heller...

------------------
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning. http://forums.planetdivine-shadow.com

[Redigerat av His Divine Shadow den 30 aug 2001]

[Redigerat av His Divine Shadow den 30 aug 2001]

VideMedlem sedan dec. 19998 577 inlägg
#7

Test: uploadrequest.item

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

His Divine ShadowMedlem sedan sep. 20004 079 inlägg
#8

hmmm... tja jag har redan skippat dendär lösningen, jag prövade dundas upload control istället.

men det ger mig detta:
Microsoft VBScript runtime error '800a01b6'

Object doesn't support this property or method: 'objUpload'

Kan det vara nått fel med installationen?
Borde servern startas om kanske?

------------------
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.
http://forums.planetdivine-shadow.com

His Divine ShadowMedlem sedan sep. 20004 079 inlägg
#9

Förresten...

När jag har ENCTYPE="multipart/form-data" i form taggen så blir alla fält blanka...

------------------
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.
http://forums.planetdivine-shadow.com

StevekingMedlem sedan aug. 2001150 inlägg
#10

Du kommer säkert långt om du byter kod hela tiden pga att den inte funkar.

VideMedlem sedan dec. 19998 577 inlägg
#11

ENCTYPE="multipart/form-data" behöver du för att kunna ladda upp filer.

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

His Divine ShadowMedlem sedan sep. 20004 079 inlägg
#12

"Du kommer säkert långt om du byter kod hela tiden pga att den inte funkar"

Tja, dundas verkade bättre, dessutom tror jag den förra kodsnutten hade kompabilitets problem med den vanliga.

"ENCTYPE="multipart/form-data" behöver du för att kunna ladda upp filer."

Jo jag vet, det konstiga är bara att dom vanliga textfälten blir blanka i databasen om jag pröva att skicka utan fil.

------------------
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.
http://forums.planetdivine-shadow.com

His Divine ShadowMedlem sedan sep. 20004 079 inlägg
#13

Aja nu fattar jag:
Enligt dundas dokumentation.
Man kan inte använda ASP Request.Form om man har "Multipart/Form-Data" i formuläret.

Man ska visst använda "objUpload.Form"

Syndbara då att Dundas inte vill funka...

------------------
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.
http://forums.planetdivine-shadow.com

VideMedlem sedan dec. 19998 577 inlägg
#14

Det var ju det LarsG sa ovan: "Du måste använda uploadrequest i stället."

En liten missuppfattning kanske... ;)

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

His Divine ShadowMedlem sedan sep. 20004 079 inlägg
#15

kanske det, men bara jag kunde se varför dundas inte vill funka, säg nu inte att servern måste startas om efter installation...

------------------
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.
http://forums.planetdivine-shadow.com

PatrikBMedlem sedan mars 20002 836 inlägg
#16

Varför då???

cya,
PatrikB

------------------
*ordning och reda!, pengar på fredag.*

His Divine ShadowMedlem sedan sep. 20004 079 inlägg
#17

Jag vet inte jag gissar bara, dundas går ju inte igång fastän jag har det installerat...

------------------
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.
http://forums.planetdivine-shadow.com

emissionMedlem sedan dec. 19996 721 inlägg
#18

Du får visa lite kod från din dundas-variant

His Divine ShadowMedlem sedan sep. 20004 079 inlägg
#19

Den är ganska simpel.

objUpload = Server.CreateObject("Dundas.Upload.2")
objUpload.Save "e:\inetpub\wwwroot\unishop\katalog\images\"
strName = objUpload.Form("blob")
strSize = objUpload.Files(0).Size
objUpload = Nothing

------------------
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.
http://forums.planetdivine-shadow.com

His Divine ShadowMedlem sedan sep. 20004 079 inlägg
#20

Jag har fått det här att funka nu men några små konstiga problem...
t.ex. om ett fält är tomt i en annan "rad" så fylls det med innehållet från det som just nu läggs till i databasen, här är en bild så kanske ni förstår: http://www.uniimport.fi/mine/konstigt.gif

Den nya koden:

<%@ Language=VBScript%>

<%
'  Object creation
'  ***************
   Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")

'  Upload
'  ******
   mySmartUpload.Upload

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\data\WebData\katalog.mdb"
SQL = "SELECT * FROM Kat"
%>
<!-- #INCLUDE FILE = "../adovbs.inc"    -->

<%

	'create variable to hold email address
	  DIM Namn
	  namn = mySmartUpload.Form("Namn")
	  
	  DIM Epost
	  Epost = mySmartUpload.Form("Epost")
	  
	  DIM Naradress
	  Naradress = mySmartUpload.Form("Naradress")
	  
	  DIM postnr
	  postnr = mySmartUpload.Form("postnr")
	  
	  DIM ort
	  ort = mySmartUpload.Form("ort")
	  
	  DIM Tel
	  Tel = mySmartUpload.Form("Tel")
	  
	  DIM fax
	  fax = mySmartUpload.Form("Fax")
  
	  DIM www
	  www = mySmartUpload.Form("www")
	  
	  DIM AmnesomrAde
	  AmnesomrAde = mySmartUpload.Form("Amnesomrade")
  
	  DIM Ovrigt_swe
	  Ovrigt_swe = mySmartUpload.Form("Ovrigt_swe")
	  
	  DIM Ovrigt_fin
	  Ovrigt_fin = mySmartUpload.Form("Ovrigt_fin")
	  
	  DIM password
	  password = mySmartUpload.Form("password")

	  Dim objRec
	  Set objRec = Server.CreateObject("ADODB.Recordset")

	  objRec.Open "kat", connect, adOpenStatic , _
 	    adLockOptimistic, adCmdTable
 
Function Free(txt) 
If IsEmpty(txt) OR IsNull(txt) Then Exit Function
txt = Server.HTMLEncode(txt)
txt = Replace(Trim(txt), vbCrLf, "<br>")
Free = txt
End Function

objRec("ovrigt_swe") = Free(Ovrigt_swe)
objRec("ovrigt_fin") = Free(Ovrigt_fin)

'		create a new record
	  objRec.AddNew
	'set the field equal to the variable
   	  objRec("Namn")		= Namn
  	  objRec("Epost")		= Epost
 	  objRec("Naradress")	= Naradress
	  objRec("Postnr")		= Postnr
   	  objRec("Ort")			= Ort
   	  objRec("Tel")			= Tel
   	  objRec("Fax")			= Fax
   	  objRec("www")			= www
   	  objRec("amnesomrade")	= Amnesomrade
   	  objRec("ovrigt_swe")	= Ovrigt_swe
   	  objRec("ovrigt_fin")	= Ovrigt_fin
   	  objRec("Password")	= Password
		'update the database with the new record
	 	'close the database
	' objRec.Close
	'  Set objRec = Nothing
	  

'  Variables
'  *********
   Dim mySmartUpload
   Dim file
   Dim intCount
   intCount=0
        

'  Connect to the DB
'  *****************
'   Set oConn = Server.CreateObject("ADODB.Connection")
 '  oConn.Open "DBQ=C:\data\WebData\katalog.mdb;Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"

'  Open a recordset
'  ****************
'   strSQL = "SELECT FILENAME,FILE FROM Kat"

'   Set objRec = Server.CreateObject("ADODB.recordset")
'   Set objRec.ActiveConnection = Connect
'   objRec.Source = strSQL
'   objRec.LockType = 3
'   objRec.Open

'  Select each file
'  ****************
   For each file In mySmartUpload.Files
   '  Only if the file exist
   '  **********************
      If not file.IsMissing Then

      '  Add the current file in a DB field
      '  **********************************
         file.FileToField objRec.Fields("FILE")
		 objRec("FILENAME") = file.FileName
         'objRec.Update
         intCount = intCount + 1
      End If
   Next

'  Display the number of files uploaded
'  ************************************
   Response.Write(intCount & " file(s) uploaded.<BR>")

'  Destruction
'  ***********
   objRec.Close
   Connect.Close
   Set objRec = Nothing 
   Set Connect = Nothing 
%>

------------------
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.
http://forums.planetdivine-shadow.com

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