questo è il codice che ho utilizzato io
codice:
<%
Dim subfolder(50) ' elenco delle sottocartelle
Dim files(200) ' elenco dei files
Dim picture(200) ' elenco dei files con l'estensione cercata
'***Assegnazione delle variabili***
' informazioni sul percorso dell'immagine
percorso = Request.QueryString("cartella")
' inizializzazione e assegnazione degli indici degli array
ifolder=1
ifiles=1
iImage=1
'***Valori da modificare***
' assegnazione del tipo di file da visualizzare
estensione="jpg"
' numero di Thumb per riga
numerothumb=4
Set fs = CreateObject("Scripting.FileSystemObject")
filepath = "public/" & percorso
' percorso assoluto del file
dbfile = Server.MapPath(filepath)
wwwpath = URL
Set f = fs.GetFolder(dbfile)
' elenco sottocartelle
Set sf = f.SubFolders
For Each f in sf 'per ogni sottocartella ....
subfolder(ifolder) = subfolder(ifolder) & f.name
ifolder=ifolder+1
Next
do while ifolder>1
'se il percorso non è stato assegnato viene generato automaticamente...
if percorso="" then
link = wwwpath & "?PATH=" &(subfolder(ifolder-1))&">" & subfolder(ifolder-1)
else
link=wwwpath & "?PATH=" &percorso&"/"&(subfolder(ifolder-1))&">" & subfolder(ifolder-1)
end if
' link alla sottocartella
Response.Write "<img src=folder.GIF width=30 ><A HREF=" & link & "</A>
"
ifolder=ifolder-1
loop
Set fl = fs.GetFolder(dbfile)
Set file = fl.Files
For Each fl in file
' Riempie l'array files con l'elenco dei files
files(ifiles) = files(ifiles) & fl.name
ifiles=ifiles+1
Next
'inserisce nella variabile totalefiles il numero dei file
totalefiles = ifiles
' contenuti nella cartella
for x =0 to totalefiles
'verifica l'estensione di ogni file
if Right (files(x),3) = estensione then
picture(iImage)=files(x)
iImage=iImage+1
end if
next
' numero delle immagini
record = iImage-1
' contenute nella cartella
indice=0
Response.Write("<table width=600 border=0>")
'Viene eseguito finchè esistono file...
do while record > indice
Response.Write("<tr>")
i=1
'stampa immagini per 'numerothumb' volte
do while ((i<numerothumb+1) and(record > indice))
Response.Write("<td> ")'inizio colonna
Response.Write("<div align=center><a href=javascript:PrevFoto('" & filepath & "/" & picture(indice+1) & "')>")
Response.write("[img] & filepath & [/img]</a></div>")
Response.Write("<div align=center>" & picture(indice+1) & "</font>")
Response.Write("</td>")
indice = indice+1
i=i+1
loop
Response.Write("</tr>")
loop
Response.Write("</table>")
Set fl = Nothing
Set sf = Nothing
set f = Nothing
Set fs = Nothing
%>
basta che passi la cartlella da leggere come parametro url, ad es.
pagina.asp?percorso=gita10
per leggere tutte le foto della cartella /public/gita10
le miniature delle foto vengono poi mostrate in una griglia
con 4 foto per riga (campo personalizzabile)
e cliccando sulla miniatura vedi la foto ingrandita.
Per l'ingrandimento ho utilizzato il javascript PrevFoto:
codice:
<script LANGUAGE="JavaScript">
<!--
<!-- Begin
function PrevFoto(img){
foto1= new Image();
foto1.src=(img);
Controlla(img);
}
function Controlla(img){
if((foto1.width!=0)&&(foto1.height!=0)){
viewFoto(img);
}
else{
funzione="Controlla('"+img+"')";
intervallo=setTimeout(funzione,20);
}
}
function viewFoto(img){
largh=foto1.width+20;
altez=foto1.height+25;
stringa="width="+largh+",height="+altez;
finestra=window.open(img,"",stringa);
}
// End -->
function MM_displayStatusMsg(msgStr) { //v1.0
status=msgStr;
document.MM_returnValue = true;
}
//-->
</script>
che devi mettere nel tag head ma puoi anche usare
altri tipi di preview come, ad esempio, il citato lightbox.
Questo sistema, come ti ho detto, è uno dei tanti che puoi
utilizzare. E' comodo in quanto puoi creare un evento in pochi
secondi e caricare molte foto in ftp in un colpo solo.
Ovviamente manca la parte per creare l'evento ma credo
che non dovresti avere problemi: con un modulo crei
un nuovo evento con i campi che ti servono
(ad es. data, luogo, descrizione) e il nome della
cartella dove andranno salvate le immagini.
Nella pagina che salva il record nel database, alla fine
dell'update del database, crei la cartella con questo codice:
codice:
<%
'dichiarazione variabili
Dim FSO, dir
'acquisizione dati da form
dir= Request.Form("dir")
'creazione istanza del File Scripting Object
SET FSO = Server.CreateObject("Scripting.FileSystemObject")
'creazione della cartella
' - dir: il nome della nuova cartella
FSO.CreateFolder(Server.MapPath("public\" & dir)
'chiusura e annullamento dell'istanza
SET FSO = NOTHING
%>
ed il gioco è fatto....
ciao
luca