Risultati da 1 a 9 di 9

Discussione: rinominare immagini con form asp

  1. #1
    magomer1 è offline Nuovo Iscritto
    Data Registrazione
    May 2012
    Messaggi
    6

    rinominare immagini con form asp

    Ciao a tutti.
    Avrei bisogno di rinominare delle immagini prese da un db o da una directory con un nome scelto di volta in volta attravesro un form.
    Con quel poco che conosco riesco a visualizzare delle immagini il cui percorso è salvato in un campo del DB, ma non ho idea di come poi cambiare il loro nome.
    Avete qualche indicazione ?
    Grazie in anticipo

  2. #2
    L'avatar di Vale2
    Vale2 è offline Utente del Forum
    Data Registrazione
    May 2006
    Località
    Livorno
    Messaggi
    440
    Ciao,

    Asp non ha un medoto Rename dell'oggetto FileSystem, ha un metodo Move, per spostare un file da una cartella a un'altra.

    Con Move puoi spostare un file nella stessa directory dando un nuovo nome, es: muovi immagine.gif (che si trova in cartella chiamata immagini) in

    nuovaimmagine.gif , immagine.gif verrà cancellata e il Move crea la nuova immagine nuovaimmagine.gif (che è la stessa). Se fai un Move da una cartella a un'altra il file verrà cancellato dalla cartella di provenienza e spostato in quella destinazione.

    NOTA: la cartella che contiene le immagini deve avere i permessi in scrittura.


    Per il DB hai il path dell'immagine in formato testo es: immagini/immagine.gif , che dopo metti con es: <%=rs("nome_campo")%> nel tag img

    <img src="<%=rs("nome_campo")%>" width="" height="" border=""> o l'immagine nel db in un campo "Oggetto OLE" ?

    Valeria.

  3. #3
    magomer1 è offline Nuovo Iscritto
    Data Registrazione
    May 2012
    Messaggi
    6
    Ciao Valeria e grazie per l'interessamento.
    Ci sono sia per il move sia per visualizzare l'immagine da DB come mi hai suggerito.
    Complico un pò la richiesta.
    DB access con un campo contenente tutti i nomi e il relativo percorso nome del campo "originale"
    Secondo campo, "nuovo", con tutti i nomi nuovi corrispondenti cioè :
    ID = 1
    Originale = vecchio.jpg
    nuovo = casa.jpg

    come imposto la pagina asp che mi dovrà "spostare" il file vecchio.jpg con il nome casa.jpg per ogni record ID=1, ID=2, ID=3 etc. etc ?
    spero di essermi riuscito a spiegare.
    Grazie ancora.
    Ciao.

  4. #4
    L'avatar di Vale2
    Vale2 è offline Utente del Forum
    Data Registrazione
    May 2006
    Località
    Livorno
    Messaggi
    440
    Ciao,

    la tua richiesta sembra di scrivere il o i codici da utilizzare per il tuo scopo.

    Non hai una base o esempi già fatti da modificare.

    ->Con quel poco che conosco riesco a visualizzare delle immagini il cui percorso è salvato in un campo del DB.<-

    Visualizzi i dati di una tabella tramite codice asp in un campo di un form perché è questo che ti serve come inizio, dopo cambi il dato che visualizzi nel campo del form con quello nuovo UPDATE.

    Per lo spostamento dell'immagine (rinomina) hai conoscenze dell'oggetto File System Object, un oggetto COM in grado di accedere alle principali funzioni per la manipolazione del file system, o l'oggetto TextStream usato per leggere e scrivere sul file in questione.

    I vari metodi per la gestione dei DB, INSERT INTO, UPDATE nome_campo o SET, DELETE

    Questo è per invogliarti a imparare ASP se devi utilizzarlo per le tue applicazioni.

    Ti posto un esempio per rinominare o spostare un file con FSO.

    Codice:
    <%
    Set fso = Server.CreateObject("Scripting.FileSystemObject")
    fso.moveFile Server.MapPath("cartella/vecchio_file.jpg"), Server.MapPath("cartella/nuovo_file.jpg")
    Set fso = Nothing
    %>
    Con queste tre righe di codice rinomini un file in questo caso vecchio_file.jpg verrà sostituito con nuovo_file.jpg

    Fatto da in form è leggermente più complicato, leggermente in quanto oltre ad utilizzare fso.moveFile, c'è la gestione degli errori e l'implementazione in due campi txt di un form.

    Per il db devi utilizzare UPDATE in una sequel SQL,

    impostare la connessione, impostare l'oggetto recordset, impostare i nomi del campi dei form dove recuperare e visualizzare i dati, modificarli e sostituirli con i nuovi.

    Non so le tue conoscienze di questo linguaggio e se sei in grado di farlo da solo.

    Fai alcune prove e posta i risultati, dove incontri problemi o altro, e sarò ben felice di aiutarti.

    Fare il lavoro (script preconfezionati e pronti per essere utilizzati) No.

    Saluti, Valeria.
    ‹(•¿•)›-- VALE DUE VALE --‹(•¿•)›

    Web Site - Collaboratrice http://www.massimo61.org/

  5. #5
    magomer1 è offline Nuovo Iscritto
    Data Registrazione
    May 2012
    Messaggi
    6
    Non volevo un codice già fatto, solo uno spunto su come iniziare e adesso ho provato così :

    <%
    Dim fso, cartella, file
    set fso = Server.CreateObject("scripting.FileSystemObject")
    set cartella = fso.GetFolder("D:\sitosmi\ren\mdb\immagini\")
    filePath = Server.MapPath("mdb/immagini/" )

    for each file in cartella.files

    %>
    <td><%=file.Name%></td>




    <form method="GET" action="move.asp">

    <table>
    <tr>
    <input type="text" name="percorso" value= <%=(filePath) & "\" & (file.name)%> size="60" ></td>

    <input type="text" name="nuovopercorso" value= <%=(filePath) & "\casa\" %> size="60" ></td>

    <td>Codice:</td><input type="text" name="codice" size="60" ></td>
    <%
    next
    %>
    </table>

    </table>
    <input type="submit" value="MODIFICA DATI!">
    </form>


    In questa pagina recupero percorso e nome del file vecchio "percorso", visualizzo il "nuovopercorso" e digito il nuovo nome in "codice".
    Premendo il pulsante modifica dati mi rimanda alla pagina move.asp dove copio il file nel nuovo percorso :

    <%
    ' Declaring Variables -->
    Dim percorso, codice, nuovopercorso
    Dim fs
    ' Creo una istanza dell'offetto FileSystemObject
    Set fs = Server.CreateObject("Scripting.FileSystemObject")


    'Retriving variables ---
    PERCORSO=request.querystring("percorso")
    nuovoPERCORSO=request.querystring("nuovopercorso")
    codice=request.querystring("codice")


    ' sposto il file pagina.html nella nuova cartella
    fs.copyfile "" & (PERCORSO) & "", "" & (nuovoPERCORSO) & " " & (codice) & ""


    Response.Write nuovopercorso



    <%


    Così funziona se metto un solo file nel vecchio percorso perchè non ho idea di dove inserire un ciclo (for each o for next) per far si che possa spostare un solo file alla volta.
    Hai suggerimenti ?
    Intanto sto provando "a caso" .......
    Grazie.

    Marco

  6. #6
    L'avatar di Vale2
    Vale2 è offline Utente del Forum
    Data Registrazione
    May 2006
    Località
    Livorno
    Messaggi
    440
    Ciao,

    non capisco cosa vuoi ottenere, prima dici rinominare un file, non è possibile come già detto se usi MoveFile

    il file verrà cancellato dalla cartella dove si trova e spostato in un'altra, se fatto sulla stessa folder il file originale verrà cancellato e sustituito con quello nuovo

    Con CopyFile verrà fatta una copia dello stesso file con il nome scelto anche se si trova nella stessa folder.


    Codice:
    <%
    Dim fso, cartella, file
    set fso = Server.CreateObject("scripting.FileSystemObject")
    set cartella = fso.GetFolder("D:\sitosmi\ren\mdb\immagini\")
    filePath = Server.MapPath("mdb/immagini/" )
    
    for each file in cartella.files
    
    %>
    Codice:
    <%
    Dim f, File, Folder
    Set f = CreateObject("Scripting.FileSystemObject")
    Set Folder = f.GetFolder(Server.MapPath("cartella"))
    For Each File in Folder.Files
    response.write File.Name &"<br>"
    Next
    Set Folder = nothing
    Set f = nothing
    %>
    L'struzione For Each...Next viene utilizzata per ripetere l'esecuzione di ciascun membro di un gruppo, in questo caso per scorrere tutti i membri della collection.
    Files restituisce una collection di tutti gli oggetti file contenuti nella cartella. Inserisco la variabile File dopo il ciclo For Each, in Folder.Files legge i file contenuti nella cartella. Next deve essere inserito dopo la variabile che si occuperà di leggere il nome dei file Name.

    response.write File.Name &"<br>"
    Next

    Set Folder = nothing
    Set f = nothing

    Libero le risorse

    Questo ti serve per leggere tutti i file di una determinata cartella.

    Per quanto scritto prima:

    Codice:
    <%
    Set fso = Server.CreateObject("Scripting.FileSystemObject")
    fso.MoveFile Server.MapPath("cartella/vecchio_file.jpg"), Server.MapPath("cartella/nuovo_file.jpg")
    Set fso = Nothing
    %>
    Basta sostituire MoveFile con CopyFile, il metodo CopyFile accetta un'altro parametro overwrite, si tratta di un valore booleano True o False, di default se non dichiarato è True, il file viene sempre sovrascritto ad ogni richiesta, se dichiarato False non permette la sovrascrittura.

    Per copiare in set di file si usa il carattere jolly

    CopyFile "c:\cartella\*.html", "c:\cartella_nuova\"

    Tutti i file con estenzione .html verrano copiati in cartella_nuova

    Modifica questo, è quello che utilizzo per creare cartelle, cancellare e creare file, spostare file ecc...

    Codice:
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
    <%
    PUBLIC FUNCTION muoviFile(fileName)
    	Dim objFso
    	Dim return
    	on error resume next : err = 0
    	IF fileName = "" OR fileName = Null THEN
    		return = False
    	ELSE
    		Set objFso = Server.CreateObject("Scripting.FileSystemObject")
                    objFso.CopyFile(Server.MapPath("cartella/"&fileName)), Server.MapPath("cartella_destinazione/"&Request.Form("filenuovoName"))&""
                    IF (err = 0) THEN
    			return = True
    		ELSEIF (err <> 0) THEN
    			return = False
    		END IF
    		Set objFso = Nothing
    	END IF
    	
    	Response.Write("NUMERO ERRORE: "&err.number&"<br>DESCRIZIONE ERRORE: "&err.description&"<br><br>"&err.Source&"<br><br>")
    	err = 0 : err.clear()
    	muoviFile = return
    END FUNCTION
    Dim page
    page = Request.QueryString("page")
    IF page = "create" THEN
    
    dim pippo
    pippo=muoviFile(Request.Form("fileName"))
    
    if pippo = False then
    Response.Write("File non Copiato " & Request.Form("filenuovoName"))
    
    elseif pippo = True then
    Response.Write("File Copiato: " & Request.Form("fileName") & " con: "  & Request.Form("filenuovoName"))
    end if
    
    ELSE
    %>
    <HTML>
    	<HEAD>
    		<TITLE>Form Copia File</TITLE>
    	</HEAD>
    	
    	<BODY>
    	<form method="post" action="copiafile.asp?page=create">
    		<input type="text" name="fileName"> <!-- file da copiare -->
    		<input type="text" name="filenuovoName"> <!-- nuovo file -->
                    <input type="submit" value="Copa File">
    	</form>
    	</BODY>
    </HTML>
    
    <%
    END IF
    %>
    Ti restituisce errore se si è verificato un errore, il numero dell'errore e il source.

    Se l'errore l'errore è <> da 0 True ti restituisce:

    NUMERO ERRORE: 0
    DESCRIZIONE ERRORE: (vuoto nessua descrizione, errore non generato).

    File Copiato: pippo.jpg con: pluto.jpg (ES)

    Per il false, non permettere la sovrascrittura di un file:

    Codice:
    objFso.CopyFile(Server.MapPath("cartella/"&fileName)), Server.MapPath("cartella_destinazione/"&Request.Form("filenuovoName"))&"",False
    Vedi se puoi addattarlo per le tue esigenze.

    Valeria.
    ‹(•¿•)›-- VALE DUE VALE --‹(•¿•)›

    Web Site - Collaboratrice http://www.massimo61.org/

  7. #7
    magomer1 è offline Nuovo Iscritto
    Data Registrazione
    May 2012
    Messaggi
    6
    Ciao, mi dispiace non essermi spiegato bene e averti fatto perdere tempo.
    Ci riprovo.

    <%
    Dim fso, cartella, file
    set fso = Server.CreateObject("scripting.FileSystemObject")
    set cartella = fso.GetFolder("D:\sitosmi\ren\mdb\immagini\")
    filePath = Server.MapPath("mdb/immagini/" )

    for each file in cartella.files

    %>
    <td><%=file.Name%></td>




    <form method="GET" action="move.asp">

    <table>
    <tr>
    <input type="text" name="percorso" value= <%=(filePath) & "\" & (file.name)%> size="60" ></td>

    <input type="text" name="nuovopercorso" value= <%=(filePath) & "\casa\" %> size="60" ></td>

    <td>Codice:</td><input type="text" name="codice" size="60" ></td>
    <%
    next
    %>
    </table>

    </table>
    <input type="submit" value="MODIFICA DATI!">
    </form>


    Ho un immagine nel percorso cartella.
    Questo viene visualizzato solo per comodità in "percorso".
    Sempre per comodità visualizza il nuovo percorso in "nuovopercorso"
    In codice digito il nuovo nome e alla pressione del pulsante di apre la pagina ...




    <%
    ' Declaring Variables -->
    Dim percorso, codice, nuovopercorso
    Dim fs
    ' Creo una istanza dell'offetto FileSystemObject
    Set fs = Server.CreateObject("Scripting.FileSystemObject")


    'Retriving variables ---
    PERCORSO=request.querystring("percorso")
    nuovoPERCORSO=request.querystring("nuovopercorso")
    codice=request.querystring("codice")


    ' sposto il file pagina.html nella nuova cartella
    fs.copyfile "" & (PERCORSO) & "", "" & (nuovoPERCORSO) & " " & (codice) & ""

    Response.Write nuovopercorso


    %><p>
    <A href=default.asp><IMG src=img/hme.gif border=0></a>
    <A href=IndexMAGAZZINO.asp><IMG src=img/idx.gif border=0></a>

    <%

    ' Faccio pulizia
    Set fs = Nothing
    %>


    che a prescindere dal copy o move, mi mette il file con il nuovo nome nel nuovopercorso.
    Questo funziona se ho un solo file nel vecchio percorso.
    Il problema è che non so come, se avessi 10 file, far leggere il primo, cambiare nome alla pressione del pulsante, leggre il secondo, cambiare nome con il pulsante, leggere il terzo e cosi via ...
    Spero di essermi spiegato meglio e in ogni caso GRAZIE !!

    Marco

  8. #8
    L'avatar di Vale2
    Vale2 è offline Utente del Forum
    Data Registrazione
    May 2006
    Località
    Livorno
    Messaggi
    440
    Ciao,

    stai leggendo i file nella directory set cartella = fso.GetFolder("D:\sitosmi\ren\mdb\immagini\")

    ma nel form c'è il path per quella destinazione value= <%=(filePath) & value= <%=(cartella)%>

    Un esempio veloce, scorrere tutti i file e visualizzarli in altrettanti form e campo txt

    il primo legge la directory di origine e il nome del file, il secondo la destinazione e il terzo per inserire il nuovo nome del file da copiare.

    Va solo sistemato, vedi.

    Codice:
    <%
    Dim fso, cartella, file
    set fso = Server.CreateObject("scripting.FileSystemObject")
    set cartella = fso.GetFolder(Server.MapPath("tua_cartella"))
    for each file in cartella.files
    Set fso = Nothing
    filePath = Server.MapPath("destinazione/immagini/")
    %>
    
    <form method="get" action="move.asp">
    <table>
    <tr>
    <td><br>Nome File e percorso di Origine<input type="text" name="percorso" value="<%=cartella%>\<%=file.Name%>" size="60"></td>
    <td><br>Percorso Destinazione<input type="text" name="nuovopercorso" value="<%=(filePath)%>\" size="60" ></td>
    <td><br>Codice: <input type="text" name="codice" size="60" ></td>
    </table>
    <input type="submit" value="MODIFICA DATI!">
    </form>
    <%
    next
    %>
    <%
    ' Declaring Variables -->
    Dim percorso, nuovopercorso, codice
    Dim fs
    ' Creo una istanza dell'offetto FileSystemObject
    Set fs = Server.CreateObject("Scripting.FileSystemObject")
    
    'Retriving variables ---
    PERCORSO=request.querystring("percorso")
    nuovoPERCORSO=request.querystring("nuovopercorso")
    codice=request.querystring("codice")
    
    if PERCORSO = "" or nuovoPERCORSO = "" or codice = "" then
    response.write"<p><A href=default.asp><IMG src=img/hme.gif border=0></a><A href=IndexMAGAZZINO.asp><IMG src=img/idx.gif border=0></a>"
    response.end
    end if
    
    fs.copyfile "" & (PERCORSO) & "", "" & (nuovoPERCORSO) & " " & (codice) & ""
    
    if nuovopercorso = "" then
    response.write"<p><A href=default.asp><IMG src=img/hme.gif border=0></a><A href=IndexMAGAZZINO.asp><IMG src=img/idx.gif border=0></a>"
    end if
    
    Response.Write "<font face=""Verdana"" size=""5""><b>"&nuovopercorso&"</b><br><br><br>"
    
    %>
    <p>
    <A href=default.asp><IMG src=img/hme.gif border=0></a>
    <A href=IndexMAGAZZINO.asp><IMG src=img/idx.gif border=0></a>
    Valeria.
    ‹(•¿•)›-- VALE DUE VALE --‹(•¿•)›

    Web Site - Collaboratrice http://www.massimo61.org/

  9. #9
    magomer1 è offline Nuovo Iscritto
    Data Registrazione
    May 2012
    Messaggi
    6
    Ciao,
    in effetti hai "pulito" la confusione che avevo fatto io mettendo anche quie controlli che servono per i campi.
    Quello che ancora mi manca è fare questa operazione per un file alla volta.
    Anche con il tuo script se metto 10 file nella cartella di origine mi fa vedere 10 form con 10 pulsanti modifica dati.
    Quello che mi servirebbe e vedere un form per il primo file, poi clicco su modifica dati, torno alla pagina iniziale e vedo il secondo file e così via.
    Non ho proprio idea.
    Che sia più facile utilizzare un DB access dove in un campo metto, per ogni silgolo record, i percorsi dei file e poi li prendo in considerazione uno ad uno ?
    Quasi quasi adesso provo anche perchè così non riesco ad andare avanti ....
    Grazie ancora.
    Ciao

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •