Ops!!
Vediamo...
...anche con un loop, non mi è stato possibile recuperare l'indice da Uploader.Files.Items. Essendo la documentazione originale dello script praticamente inesistente, ho quindi aggirato il problema a monte utilizzando jQuery (che già veniva utilizzato per creare nuovi campi per gli ulteriori file da caricare).
Non è una soluzione "brillantissima" ma, a patto che l'utente abbia JS attivato ovviamente, funziona egregiamente. Non ho le pagine sotto mano al momento quindi cercherò di spiegare il concetto di cosa ho fatto.
Il form ha (anche):
1. un bottone che esegue una funzione jQuery che aggiunge i campi con un numero consequenziale;
2. un campo nascosto con la sequenza di campi esistenti nel form (value=",1,2,3...");
3. per ogni input di tipo file creo un campo (hidden oppure text/readonly) il cui valore, quando viene selezionato un file nell'input file corrispondente, viene riempito con il nome del file da caricare.
codice:
<form name="mioform" id="idmioform" method="POST" ENCTYPE="multipart/form-data" action="miaactionpage.asp"><input type="hidden" name="arrNumeri" value=",1,2">
<input type="text" name="Descrizione1" value=""><input type="file" name="File1" onchange="javascript:lamiafunzione('numeroFile');" ><input type="file" name="FileN1" value="">
<input type="text" name="Descrizione2" value=""><input type="file" name="File2" onchange="javascript:lamiafunzione('numeroFile');" ><input type="file" name="FileN2" value="">
<input type="image" src="ilmiobottone.png" onclick="return(aggiungicampi());" >
</form>
Nella action page:
a. trasformo in un array del campo di cui al punto 2 precedente e ne determino l'indice massimo (rispettivamente con Split() e UBound() );
b. eseguo un ciclo for...next in cui comparo, comparo Uploader.Form("fileN" & variabile) con il nome del file corrente (File.FileName) e se trovo una corrispondenza, prelevo il valore (che è un numero) dell'array di cui sopra.
codice:
maxNUMs = UBound(Split(Uploader.Form("arrNumeri"),","))
arrNUMs = Split(Uploader.Form("arrNumeri"),",")
[...]
for cNUMs = 1 to (maxNUMs)
if Uploader.Form( "FileN" & arrNUMs(cNUMs) ) = File.FileName then
NUMs = cNUMs
end if
next
[...]
uncampochevolevo = Uploader.Form( "Descrizione" & NUMs )
In questo modo so il "numero" del file che sto trattando nel ciclo "For Each File In Uploader.Files.Items...Next" e posso recuperare i campi che si riferiscono ad esso.
Cia!!
Originariamente inviato da optime
nello spirito del forum, posta la soluzione, potrebbe interessare a qualche altro forumista con il tuo stesso problema.