webForumDet fria alternativet

Upload file?

1 svar · 411 visningar · startad av tomas21

tomas21Medlem sedan feb. 2003130 inlägg
#1

Hej!

Jag använder mig av Overrides upload script utan komponent.
Det jag vill lägga till är att scriptet kollar ifall det redan finns en fil med samma namn som jag försöker att ladda upp. Ifall det sker då ska den skriva ut response.write som säger att man ska byta filens namn för att kunna ladda upp den.

Här är koden:


'Code for the uploading the picture
If Request.QueryString("Bild1") = "Ja" Then
	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
	'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("../bilder/produkter/"&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 & """>"

	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
MogMedlem sedan nov. 2003266 inlägg
#2
Set Obj = CreateObject("Scripting.FileSystemObject")

If (Obj.FileExists ("/sökväg/namn.jpg")) = True) Then
   Response.Write("Filen finns")
End If
125 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)