webForumDet fria alternativet

Ladda upp bilder till servern med ASP ?

ASP

33 svar · 3 656 visningar · startad av Bire

Medlem sedan dec. 199919 074 inlägg
Frågan#1

Går det ?

Det måste väl gå på nått sätt att leta fram en bild på hdd och skicka upp den till servern med hjälp av ASP ?

Eller ?

------------------
Explorer in a further region of experience.
<A HREF="http://www.lifestyleshop.nu" TARGET=_blank>www.LifeStyleShop.nu</A>

Medlem sedan dec. 19998 577 inlägg
#2

Javisst går det... jag kan rekommendera denna komponent: http://www.softartisans.com/

kolla efter SA-fileup

------------------
        )|(
       (o o)
-oo0-(_)-0oo-----
webeye.nu *hem*
vide@4sale.se

Medlem sedan maj 2000755 inlägg
#3

Det går även utan komponent om man föredrar det

Medlem sedan dec. 199919 074 inlägg
#4

Detta låter spännade a.. Kan du berätta mer ?

------------------
Explorer in a further region of experience.
<A HREF="http://www.lifestyleshop.nu" TARGET=_blank>www.LifeStyleShop.nu</A>

Medlem sedan juni 2000112 inlägg
#5

Jag såg en artikel på ASPToday. Kanske den kan hjälpa dig.
http://www.asptoday.com/articles/20000316.htm

/Fredrik 22993619

Medlem sedan dec. 19991 072 inlägg
#6

Hej, tänkte bara säga att jag själv suttit och laborerat en del med detta script och att det fungerar förvånansvärt bra!

Passar utmärkt när sura webhotell inte vill installera komponenter.

Som du säkert ser på koden så läses filen du ska skicka in binärt och sedan används filesystemobject och createtextfile för att spara filen.

------------------
Fredrik Klarqvist
fredrik.klarqvist@swipnet.se
www.streetwise.se/fredrik/

Medlem sedan dec. 199919 074 inlägg
#7

Om vanligt är jag inte riktigt med på noterna ;)

fredrik: Har du lust att publicera ett kodexempel som funkar utan extra komponenter tror du ?

------------------
Explorer in a further region of experience.
<A HREF="http://www.lifestyleshop.nu" TARGET=_blank>www.LifeStyleShop.nu</A>

Medlem sedan maj 2000755 inlägg
#8

Hej igen Bire!

Mitt förra inlägg var ju inte så konstruktivt direkt...

Här kommer en adress till en hemsida med exempel och nerladdningsbar kod: http://www.pstruh.cz/help/ScptUtl/library.htm

Hoppas det kan hjälpa dig!

Medlem sedan dec. 199919 074 inlägg
#9

Tack a..

Jag ska kolla igenom filerna och se om mina hjärnceller är i symbios med varandra under kvällen ;)

Tack tack tack !

------------------
Explorer in a further region of experience.
<A HREF="http://www.lifestyleshop.nu" TARGET=_blank>www.LifeStyleShop.nu</A>

[Redigerat av Bire den 19 jun 2000]

Medlem sedan dec. 19991 072 inlägg
#10

Ok....mycket kod blir det...

Valfritt filnamn:

<FORM METHOD="Post" ENCTYPE="multipart/form-data" ACTION="outputFile.asp">
Fil : <INPUT TYPE="file" NAME="blob"><BR>
<INPUT TYPE="submit" NAME="ok">
</FORM>

outputfile.asp:

<%
' 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("test/"&filename))
response.write(Server.mappath(filename)) 

 For i = 1 to LenB(value)
	 MyFile.Write chr(AscB(MidB(value,i,1)))
 Next
 
 MyFile.Close
%>
<b>Uploaded file : </b><%=filename%><BR>
<img src="test/<%=filename%>">
<!--#include file="upload.asp"-->

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
%>

Det funkar fint hos mig. Det är ju en hel del kod men man använder ju kanske den inte på alla sidor och kanske inte alls för kunder utan snarare för administration av sajter.

Det enda som jag har märkt med det är att filen man laddar upp är "låst" av system så att den inte går att ta bort i typ 30 sekunder efter att man har laddat upp den (den fungerar dock).

Hoppas det funkar!

------------------
Fredrik Klarqvist
fredrik.klarqvist@swipnet.se
www.streetwise.se/fredrik/

Medlem sedan dec. 199919 074 inlägg
#11

Bire´s Oscarstal: ;)

Först vill jag tacka a för det utmärkta tipset om scriptet som man kan ladda upp filer direkt till databasen ! Kanon.. Det ska jag använda sen !

Sen vill jag tacka fredrik för den utsökta lilla kodsnutt som han publicerade här !
Funkade klockrent och löste mina problem helt utan bekymmer !

Supertack till er bägge två !

Sen vill jag även tacka Vide trots att jag inte hade nytta av hans tips den här gången..
Men jag är säker på att han kommer med bättre tips i framtiden ;)
Han har ju hjälpt mig förr !!
Tack Vide för att du bryr dig.

Så här glad är jag nu: -> :e <- !

------------------
Explorer in a further region of experience.
<A HREF="http://www.lifestyleshop.nu" TARGET=_blank>www.LifeStyleShop.nu</A>

Medlem sedan dec. 19998 577 inlägg
#12

*ovationer för Bire's Oscarstal :e*

// Vide

------------------
www.webeye.nu

Medlem sedan feb. 20001 590 inlägg
#13

Tänk bara på att man använder
ENCTYPE="multipart/form-data
vilket gör det svårt att ha vanliga textrutor att skicka i samma formulär.

Jag har också provat ett liknande script (som jag knackade ihop själv) och den största nackdelen är prestandan, det kan ta väldigt lång tid jämfört med en komponent. Annars är det ett supersätt.
Någon som lyckats ändra i koden så man kan göra "multiple file uploads" dvs flera filer på en gång?

/T

------------------
<*~-. Toonster .-~*>

Medlem sedan maj 2000755 inlägg
#14

Tjena Toonster!

Ta en titt på http://www.pstruh.cz/util/upload/upload.asp i exemplet kan man ladda upp två filer

Medlem sedan dec. 19991 072 inlägg
#15

Toonster:

ENCTYPE="multipart/form-data
vilket gör det svårt att ha vanliga textrutor att skicka i samma formulär.

På vilket vis skulle det vara svårt? Kan det bugga sig?

En sak som jag iof inte har kollat som även är en "bugg" i sa-filup också är om man har ett formulär med kryssrutor.

När man då på nästa sida ska kolla om någon har kryssat i rutorna så hämtar man ju input-namnet med request.

MEN om man INTE har kryssat i någon ruta och försöker hämta värdet så blir det fel. (man kan ju inte veta i förväg om någon kryssar i rutan eller inte...det kollar man ju med requesten.)

Eller är det någon som vet någon lösning på detta?

------------------
Fredrik Klarqvist
fredrik.klarqvist@swipnet.se
www.streetwise.se/fredrik/

Medlem sedan dec. 19998 577 inlägg
#16

Kan man inte med javascript skicka med värdena ifrån kryssrutorna i URL:en, och sedan kolla dessa där?

------------------
www.webeye.nu

Medlem sedan dec. 19996 721 inlägg
#17

Vad är problemet egentligen?

Medlem sedan dec. 19991 072 inlägg
#18

jo...det borde nog funka att kolla med ett javascript.

Men i mitt fall skulle det inte funkat ändå för den infon jag får från dessa kryssrutor används för att administrera poster i en databas.

Men om jag skulle haft en redirect imellan kanske det skulle funka.

Det hela går ju att lösa med on errror resume next men det är ju kanske inte alltid att rekommendera.

Problemet är ju att man inte vet om användaren har kryssat i rutan eller inte. Har den gjort det så funkar det fint. Men om den inte har gjort det så blir det fel när jag försöker hämta namnet på kryssrutan med upload.form("kryssrutan").

Men för att kolla om rutan är ikryssad eller inte så måste jag ju först hämta värdet, och det är där problemet ligger...

Tack ändå!

------------------
Fredrik Klarqvist
fredrik.klarqvist@swipnet.se
www.streetwise.se/fredrik/

[Redigerat av fredrik den 20 jun 2000]

Medlem sedan dec. 19998 577 inlägg
#19

Jag menar inte att du skall kolla om man fyllt i eller inte... utan skicka med värdet i URL:en som Querystrings (med javascript).

Då kan du ju hämta värdet med ASP på nästa sida och kolla om du innehåller något... För det är väl där problemet ligger, att du kan kolla detta med Request.Form... eller är jag helt ute och cyklar?

------------------
www.webeye.nu

Medlem sedan feb. 20001 590 inlägg
#20

Med:

ENCTYPE="multipart/form-data

Kan man tex. inte ha en textruta med namn="adress"

Och sedan hämta det värdet med

Request.form("adress")

OBS!->>>Jag har iof. inte provat, men det fungerar inte med SAfileUpload komponenten, utan där får man använda en metod sim finns i uploadobjektet, för att haämta andra formulärvärden.

/T

------------------
<*~-. Toonster .-~*>

270 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
144 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)