webForumDet fria alternativet

hämta filnamn i aspSmartUpload

ASP

7 svar · 283 visningar · startad av rollo

Medlem sedan aug. 2001203 inlägg
Frågan#1

Hej!

Jag har skapat en sida för att redigera ett inlägg i en diskussion. På sidan finns även möjlighet att ladda upp / redigera 7 filer och de är namngivna med bild1, bild2, bild3, bild4, bild5, fil01 & fil02.

Jag hämtar filinfo på följande sätt

Server.ScriptTimeout = 300 ' five minutes
'  Variables
'  *********
   Dim mySmartUpload
   Dim intCount
'   Dim theField
        
'  Object creation
'  ***************
   Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
'  Deny filetypes
'  ************** 
   mySmartUpload.DeniedFilesList = "exe,bat,asp,vbs,com"
'  Upload
'  ******
   mySmartUpload.Upload
'  Save the files with their original names in a virtual path of the web server
'  ****************************************************************************
   intCount = mySmartUpload.Save("/upload/kb")
'  skapa variabler för inmatning i db   
'  **********************************
	tmp_fil1  = mySmartUpload.Files(1).Filename
	tmp_fil2  = mySmartUpload.Files(2).Filename
	tmp_fil3  = mySmartUpload.Files(3).Filename
	tmp_fil4  = mySmartUpload.Files(4).Filename
	tmp_fil5  = mySmartUpload.Files(5).Filename
	tmp_fil6  = mySmartUpload.Files(6).Filename

När jag testar att redigera sidan så finns där 2 filer redan och jag
ändrar bara lite i texten. Jag får då följande felmeddelande

aspSmartUpload.Files error '800404b5'

Invalid Files Name '6' (Error 1205)

/kb/redigera_2.asp, line 30

Tror att detta kan ha att göra med att det bara är 5 file-fält som finns på sidan?!!?

Har testat att namnge fälten i koden, dvs mySmartUpload.Files("fil01").Filename, men det funkar tyvärr inte!

Vad gör jag för fel?

Tack på förhand!

rollo

Medlem sedan apr. 20003 174 inlägg
#2

Testa att köra en koll av värdena först.. ex.

[red]' TimeOut
' *******
	Server.ScriptTimeout = 300 ' five minutes

'  Variables
'  *********
	Dim mySmartUpload
	Dim intCount
	Dim tmp_fil1
	Dim tmp_fil2
	Dim tmp_fil3
	Dim tmp_fil4
	Dim tmp_fil5
	Dim tmp_fil6
        
'  Object creation
'  ***************
	Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")

'  Deny filetypes
'  ************** 
	mySmartUpload.DeniedFilesList = "exe,bat,asp,vbs,com"

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

'  skapa variabler för inmatning i db   
'  **********************************
	tmp_fil1  = mySmartUpload.files.item(1).filename
	tmp_fil2  = mySmartUpload.files.item(2).filename
	tmp_fil3  = mySmartUpload.files.item(3).filename
	tmp_fil4  = mySmartUpload.files.item(4).filename
	tmp_fil5  = mySmartUpload.files.item(5).filename
	tmp_fil6  = mySmartUpload.files.item(6).filename

'  Save the files, [b]if there are any,[/b] with their original names in a virtual path of the web server
' ************************************************************
	If Len(tmp_fil1) > 0 Then mySmartUpload.files.item(1).saveas "/upload/kb/"& tmp_fil1
	If Len(tmp_fil2) > 0 Then mySmartUpload.files.item(2).saveas "/upload/kb/"& tmp_fil2
	If Len(tmp_fil3) > 0 Then mySmartUpload.files.item(3).saveas "/upload/kb/"& tmp_fil3
	If Len(tmp_fil4) > 0 Then mySmartUpload.files.item(4).saveas "/upload/kb/"& tmp_fil4
	If Len(tmp_fil5) > 0 Then mySmartUpload.files.item(5).saveas "/upload/kb/"& tmp_fil5
	If Len(tmp_fil6) > 0 Then mySmartUpload.files.item(6).saveas "/upload/kb/"& tmp_fil6[/red]
Medlem sedan aug. 2001203 inlägg
#3

Tack för svaret!

Tyvärr funkade det inte. Däremot testade jag att kommentera bort tmp_fil6 & tmp_fil7 och då funkade det!

Går det inte att hämta värdet via namnet på fältet och på så sätt komma runt problemet?

rollo

Medlem sedan apr. 20003 174 inlägg
#4

Jag tror jag missförstod dig lite.. ;)
Finns det bara 5 fält på sidan så kan du inte hämta värden från 6 eller 7 st.

Är antalet fält dynamiskt eller vet du alltid hur många fält det är?

Medlem sedan aug. 2001203 inlägg
#5

Totalt är det 7 fält, MEN finns redan filen så finns inte fältet....

Så här menar jag

		<%if a63("bild1") ="" then%>
		<input type="file" name="bild1"><br>
		<%else%>
		<a class=brod href="/upload/kb/<%=a63("bild1")%>" target="new_window"><%=a63("bild1")%></a>  -  <a class=brod href="tabort_fil.asp?id=<%=request("id")%>&fil=bild01">ta bort</a><br>
		<%end if%>

Hängde du med?

Antalet är inte dynamiskt och de har fasta namn.

rollo

Medlem sedan apr. 20003 174 inlägg
#6

EN variant på lösning: :)

Skapa en variabel som innan du börjar visa dina fält sätts till 0, ex.

[red]intFileFields = 0[/red]

..för varje fält som desan visas ökar du på detta talet med +1, ex.

[red]intFileFields = intFileFields +1[/red]

Skicka sedan med den variabeln till din upload-sida och loopa igenom uppladdningen så många gånger som intFileFields´s värde.

Medlem sedan aug. 2001203 inlägg
#7

just det, så kan jag göra!

Men, vad händer om det är bild3 som byts ut, får inte den id = 1 då?

rollo

Medlem sedan apr. 20003 174 inlägg
#8

Första file-fältet på sidan = mySmartUpload.files.item(1).filename
Andra file-fältet på sidan = mySmartUpload.files.item(2).filename

För att loopa igenom och bara hämta från dom som innehåller värden
byter du ut siffran mot integer-värdet från din loop, ex.

[red]For [b]i[/b] = 0 To intFileFields

    mySmartUpload.files.item([b]i[/b]).saveas "/upload/kb/"& mySmartUpload.files.item([b]i[/b]).filename

Next[/red]
255 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)