webForumDet fria alternativet

Fråga om aspUpload

ASP

7 svar · 638 visningar · startad av Eclipse

Medlem sedan juli 20003 825 inlägg
Frågan#1

Jag har gjort en liten kodsnutt som byter ut svenska tecken och mellanslag och annat till tecken som garanterat fungerar på Internet.

Men hur gör jag för att ladda upp en fil med det nya namnet med hjälp av ASPUpload!?

http://www.aspupload.com/manual_simple.html

	' ## NO OVERWRITE
	Upload.OverwriteFiles = False

		' ## REPLACE SIGNS
'		myFileName = File.Filename
'		myFileName = replace(myFileName, " ", "_")
'		myFileName = replace(myFileName, "é", "e")
'		myFileName = replace(myFileName, "å", "a")
'		myFileName = replace(myFileName, "ä", "a")
'		myFileName = replace(myFileName, "ö", "o")
'		myFileName = replace(myFileName, "É", "E")
'		myFileName = replace(myFileName, "Å", "A")
'		myFileName = replace(myFileName, "Ä", "A")
'		myFileName = replace(myFileName, "Ö", "O")

	' ## SAVE FILE
	Upload.Save Server.MapPath("\files\") & "\"

	' ## Obtain file object
	Set File = Upload.Files("FILE1")
Medlem sedan feb. 20034 441 inlägg
#2

Du använder dig av:

File.Move()

Efter raderna med Set File = ... kör du:

File.Move Server.MapPath("..\DIN_KATALOG" & "\" & myFileName & File.Ext)

/r

Glöm inte att köra File.Delete sist i koden om du skapar en dublett eller har kvar den 'gamla' filen.
Lycka till!

Medlem sedan juli 20003 825 inlägg
#3

Hmmm...

Jag har alltid ogillat det där Persits-skiten och detta känns som ännu en anledning att vara starkt skeptiskt...

However, det är inte ditt fel och ett stort tack för detta förslag som jag ska ta mig ann.

Medlem sedan feb. 20034 441 inlägg
#4

Jag har använt Persits mycket, speciellt ASPUpload och ASPJpeg.
Gillar dessaa båda skarpt, har aldrig varit några problem att få det att funka, det är relativt lätt kod man använder sig av.

Vad är det som gör att många hyser agg mot dessa komponenter, skulle gärna vilja veta det ;)

/r Glöm inte att acceptera som slutgiltigt svar om du är nöjd med hjälpen du fått ;)

Medlem sedan juli 20003 825 inlägg
#5

Jag tycker både dokumentationen, hjälpen på deras hemsida och koden är rörig och svår att förstå och över lag inte speciellt användarvänlig...

Men visst, det kanske säger mer om mig än om dom! :-)

Som utvecklare arbetar jag efter principen att "om någon av mina användare får ett felmeddelande är det mitt fel (som utvecklare)". Helt klart har Persits inte samma syn på det där som jag... men det är som det är...

***
Jag accepterar slutgiltigt svar när jag har fått det att fungera! :-) Ja... du ska få kredit...!!

En följdfråga:
- Om jag har en fil som inte behöver manipuleras!?

Ska jag spara alla filer i mappen "/images/tmp/" och sen flytta dom till "/images/"? Jag tänker, om jag har en fil som heter "eclipse.jpg" så blir det ju ingen manipulation med den och om jag då använder File.Move() som du beskriver, så kommer jag att ta bort originalfilen... Det är ju inte så läckert...!

Typ!

Min fråga är kanske mer, hur gör ni!?

Medlem sedan juli 20003 825 inlägg
#6

Hmm... Kanske är det jag som gör fel!? Måste jag över huvud taget *spara* filen!? Detta fungerar med ASPSmartUpload på annan webbplats:

	' ## Only allow jpg or jpeg files
   mySmartUpload.AllowedFilesList = "jpg,jpeg"
'on error resume next

	' ## UPLOAD FILE
	mySmartUpload.Upload

	' ## CHECK IF FILE EXISTS
	DIM fso, myFileName, myArray
	DIM strFileName, strExt, intCounter
	SET fso = CreateObject("Scripting.FileSystemObject")
	myFileName = mySmartUpload.Files.Item(1).FileName

	' ## REPLACE SIGNS
	myFileName = replace(myFileName, " ", "_")
	myFileName = replace(myFileName, "é", "e")
	myFileName = replace(myFileName, "å", "a")
	myFileName = replace(myFileName, "ä", "a")
	myFileName = replace(myFileName, "ö", "o")
	myFileName = replace(myFileName, "É", "E")
	myFileName = replace(myFileName, "Å", "A")
	myFileName = replace(myFileName, "Ä", "A")
	myFileName = replace(myFileName, "Ö", "O")

	IF fso.fileExists( server.MapPath("\files\" & myFileName ) ) THEN
		myArray = split( myFileName, ".", -1, 1)

		strFileName = myArray(0)& "_"
		intCounter  = 1
		strExt      =  "." & myArray(1)
		myFileName = strFileName & intCounter & strExt

		' ## CHECK FOR DUPLICATES
		WHILE (fso.fileExists(server.MapPath("\files\" & myFileName)))
			myFileName = strFileName & CInt(intCounter) +1 & strExt
			intCounter = intCounter + 1
		WEND
	END IF
	' ## CHECK FOR FILE
	IF NOT mySmartUpload.Files.Item(1).IsMissing Then
		' ## SAVE FILE
		mySmartUpload.Files.Item(1).SaveAs(server.MapPath("\files\") & "\" & myFileName)

	  ' ## NEW POST
	  SQL = "INSERT INTO [" & myTable & "] (strName, dteCreated, dteViewFrom, dteViewTo, " _
		& "  intSortfield, strFileName, intCompanySessionID, intRotate, bolView ) SELECT " _
		& "'" & myFileName & "' " _
		& ", #" & date() & "# " _
		& ", #" & date() & "# " _
		& ", #" & date() & "# " _
		& ", (COUNT(*)+1) " _
		& ", '" & myFileName & "'" _
	  & ", " & myID _
		& ", 0 " _
		& ", TRUE " _
		& " FROM [" & myTable & "] WHERE intCompanySessionID = " & myID & ";"

Så rörigt... hoppas tanken lyser i alla fall!

Medlem sedan feb. 20034 441 inlägg
#7

Nu blir jag lite förvirrad, är det med AspUpload du vill ha hjälp, eller är det mitt scriptet ovan du inte får funka (AspSmartUpload..?)

Om du inte manipulerar filen något, alltså om du laddar upp den flyttar, med Move(), behöver du inte "ta bort" den.

Om du tex. byter namn med metoden "SaveAs", så skapas en kopia som sedan sparas med ditt nya namn.
Då måste du ta bort "originalet" m.h.a File.Delete.

Det här med felmeddelanden som AspUpload sprutar ut sig, vilka är det?
För det mesta beror det ju på att man som utvecklare glömt något eller att man inte satt vissa "begränsningar", tex. filstorlek, namn och typ osv.
Jag har aldrig varit med om att det gett fel om man inte själv gjort ngt galet.

Själv brukar jag göra nått sånt här:

<%
Set Upload = Server.CreateObject("...")
For Each File In Upload.Files
	If Not File Is Nothing Then
		fRealName	= File.FileName
		fName = getChar(27) & File.Ext
		File.Move Server.MapPath("..\Mappen" & "\" & fName)
		sSql =	"INSERT INTO tabell " &_
				"(namn, typ, storlek) " &_
				"VALUES " &_
				"(" &_
				"'" & fName & "', " &_
				"'" & File.Ext & "', " &_
				"" & File.Size & "" &_
				")"
'		Response.Write(fName & "<br>" & sSql & "<br>")
		Set oRec = oConn.Execute(sSql)
	End If
Next
%>

Brukar även ha med lite kod som kollar storlek, filtyp osv för att försäkra mig om att man inte laddar upp sånt man inte får.

Inte så mycket kod, brukar funka fint för det mesta ;)

Medlem sedan juli 20003 825 inlägg
#8

Tack! Din kod ser lovande ut! Jag tycker själv det är rörigt med olika komponenter för samma sak på olika webbplatser... Det är väldigt lätt att blanda ihop fel sak med fel kod.

278 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
135 ms — ändringar (db)