webForumDet fria alternativet

Ladda upp många filer med SAFileUP!

ASP

11 svar · 626 visningar · startad av webbSAJTEN

Medlem sedan jan. 2002992 inlägg
Frågan#1

God dag!
Gud, denna sida blir aldrig klar!

Jag använder komponenten SAFileUP för att tänka upp bilder till en sida.
Jag har kämpat som en gnu för att bestämma ett eget namn på filen så att den heter som jag vill.

Nu är det såhär att jag måste koda ihop något så att det går att ladda upp 10 sidor samtidigt och alla skall få ett unikt namn som slumpas fram.

Detta är koden jag använder för att tanka upp en bild.

set upl1 = Server.CreateObject("SoftArtisans.FileUp")
	upl1.OverWriteFiles = false
	
	FName = Mid(upl1.UserFilename, InstrRev(upl1.UserFilename, "\") + 1)
	
	FExtension = MID(FName,instr(FName,".")+1)
	FCONT = upl1.Form("f1").ContentType
	
	   upl1.Path = Server.MapPath("./bilder/") 
	
	user = session("user")
	intUserID = session("ID") 
	strFile = FName
	
	Akoll = Right((strFile), 3)
								
	if Akoll = "gif" then
	upl1.Form("f1").Save
								
	elseif Akoll = "GIF" then
	upl1.Form("f1").Save
								
	elseif Akoll = "jpg" then
	upl1.Form("f1").Save
								
	elseif Akoll = "JPG" then
	upl1.Form("f1").Save
							
	elseif Akoll = "jpeg" then
	upl1.Form("f1").Save
	
            elseif Akoll = "JPEG" then
	upl1.Form("f1").Save
								
	elseif Akoll = "TIF" then
	upl1.Form("f1").Save
								
	elseif Akoll = "TIF" then
	uupl1.Form("f1").Save
								
	elseif Akoll = "png" then
	upl1.Form("f1").Save
								
	elseif Akoll = "PNG" then
	upl1.Form("f1").Save
								
	else
								
	response.Redirect("index.asp")
								
	end if
	
	if (upl1.IsEmpty) then
		Response.write "<p>Fel: Filen finns troligtvis inte!</p>"
		response.Redirect("index.asp")
	   elseif (upl1.ContentDisposition <> "form-data") then
		Response.write "<p>Fel: något blev fel!</p>"
		response.Redirect("index.asp")
	   else
		  
			   fil = "bilder\"&strFile
			   andelse = Right((strFile), 3)
			   
			   randomize()
			   namn=Int((9999999999-1)*Rnd + 1)
			   slutnamn = ""&namn&"."&andelse&""
	
			  Set fso = Server.CreateObject("Scripting.FileSystemObject")
			  Set fileObject = fso.GetFile(Server.MapPath(fil)) 
			  fileObject.Name = ""&namn&"."&andelse&""
			  
			  strSQL ="INSERT INTO pics (strUser, intUserID, strFile) values ('" & user & "', " & intUserID & ", '" & slutnamn & "')"
			Connect.Execute(strSQL)
			
			
end if
Medlem sedan jan. 2002992 inlägg
#2

Men snälla, är det ingen som vet något bra sätt? :(

Medlem sedan dec. 19996 721 inlägg
#3

Loopa igenom elementen (ge dem namn som börjar med "file"), ta fram ett slumpnamn och spara

For Each item in upl1.Form
   if instr(item,"file")=1 then

      'Använd upl1.Form(item) precis som du använt upl1.Form("f1")

   end if
Next

Ett par kommentarer på ditt kodexempel:

1.


Akoll = Right((strFile), 3)

if Akoll = "gif" then
	upl1.Form("f1").Save
								
	elseif Akoll = "GIF" then
	upl1.Form("f1").Save
								
	elseif Akoll = "jpg" then
	upl1.Form("f1").Save
								
	elseif Akoll = "JPG" then
	upl1.Form("f1").Save
							
	elseif Akoll = "jpeg" then
	upl1.Form("f1").Save
	
            elseif Akoll = "JPEG" then
	upl1.Form("f1").Save
								
	elseif Akoll = "TIF" then
	upl1.Form("f1").Save
								
	elseif Akoll = "TIF" then
	uupl1.Form("f1").Save
								
	elseif Akoll = "png" then
	upl1.Form("f1").Save
								
	elseif Akoll = "PNG" then
	upl1.Form("f1").Save
								
	else
								
	response.Redirect("index.asp")
								
	end if

...är onödigt långt och kommer inte att fungera för t.ex. "JPEG". Prova något sånt här i stället..

Akoll = lcase(fso.GetExtensionName(strFile))

if Akoll = "gif" or Akoll="jpg" or Akoll="jpeg" or Akoll="tif" or Akoll="png" then
	upl1.Form("f1").Save
else
	response.Redirect("index.asp")
end if

2.

Response.write "<p>Fel: Filen finns troligtvis inte!</p>"
		response.Redirect("index.asp")

Antingen gör man Response.write eller så Redirectar man. Inte både och. Det går inte.

3.

 andelse = Right((strFile), 3)

Man kan sällan utgå från att en filändelse är 3 tecken.

4.

fileObject.Name = ""&namn&"."&andelse&""

http://www.webforum.nu/showthread.php?t=142490

Medlem sedan jan. 2002992 inlägg
#4

Dina kommentarer är nu ändrade.. tack.

Jag förstår inte riktigt hur jag skall göra med formen faktiskt.
Tror du att du skulle kunna förklara igen och kanske ge något exempel? Snälla!

Medlem sedan dec. 19996 721 inlägg
#5
'kalla alla file-element för något som börjar på "file", så kan vi identifiera dem enkelt i koden

'Loopa igenom alla formulärelement
For Each item in upl1.Form
   'Kolla om namnet börjar på "file"
   if instr(item,"file")=1 then
      'Använd upl1.Form(item) precis som du använt upl1.Form("f1") i ditt eget exempel
   end if
Next

http://support.softartisans.com/support-216.aspx

Medlem sedan jan. 2002992 inlägg
#6

Bestämma filer

if Akoll = "gif" then
upl1.Form(item).Save
	
elseif Akoll = "jpg" then
upl1.Form(item).Save

elseif Akoll = "tif" then
upl1.Form(item).Save
						
elseif Akoll = "png" then
upl1.Form(item).Save

elseif Akoll = "bmp" then
upl1.Form(item).Save

else

response.Redirect("http://www.aftonbladet.se")
end if

Använder detta för att bestämma vilka bilder man ska kunna ladda upp..
Den fungerar inte klokt..
Vilken fil ja än tankar upp kommer ja till aftonbladet..
Jag har skrivit ut Akoll och där står det gif, testar mest i de formatet.

Jag har testat med koden från emission men det blir samma fel.

Är det någon som har en idé?

Medlem sedan jan. 2002992 inlägg
#7

Det är ingen som har en idé om hur jag skall lösa detta?

Medlem sedan apr. 20031 660 inlägg
#8

HEJ!

Hmm, du har int egått i if else-fällan, dvs mellanslag?
Prova skriva endast en if-sats för gif, när du fått rätt på den, lägg till de andra.

Jag hade däremot gjort om hela till Select Case, mindre kod.

http://www.devguru.com/Technologies/vbscript/quickref/selectcase.html

Medlem sedan okt. 2004502 inlägg
#9

Istället för att sticka iväg till Aftonbladet, kanske det är vettigt att skriva ut ett felmeddelande följt av värdet på Akoll - så du kan se om felet ligger tidigare i din kod (vilket det förmodligen gör).

Om du inte använder Option Explicit, så prova det. Kanske innebär det att du hittar ett stavfel på ett variabelnamn som ställer till det för dig...

Medlem sedan jan. 2002992 inlägg
#10

Nu har jag börjar kikat ordentligt på koden igen men jag hittar inget fel.

Akoll = lcase(right(strFile,3))

if Akoll = "gif" then
upl1.Form(item).Save
else
response.Write("Fel, formatet var "& Akoll &"")
end if

Nu testar jag enbart formatet gif som ni ser..
Jag gjorde en bild i PS som garanterat är en gif.

Jag har testa att skriva ut Akoll när jag tankar upp och det står "gif".
När jag laddat upp bilden så står det kommer felmeddelandet upp, dock inte något i Akoll.

Det roliga är att bilden laddas upp och får et nytt namn, precis som det skall vara.

Va sjutton kan felet vara??

Medlem sedan jan. 2002992 inlägg
#11

Jag tog bort den där kollen..
Tänkte kolla om det fungerade då..

An exception occurred: 'upl1.Form(...).Save'

Detta felmeddelande fick ja.
Är det något som vet varför?

Medlem sedan jan. 2002992 inlägg
#12

Ja!
Äntligen så fungerar detta..

intF = 0
do While intF < 10

intF = intF+1
formular = "file"&intF
	
if not (upl1.Form(formular).IsEmpty) then

sådär ändrade ja och nu fungerar det fint!!

Tackar alla!

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