Salve a tutti,
uso da parechcio tempo un sistema di upload (trovato qui e leggermente modificato) che non mi da nesusn problema.
Ora però i problemi sono apparsi durante la rinominazione del file.
Mi spiego, all'atto dell'inserimento del record e della relativa imamgine nel db (ovviamente solo il riferimento all'immagine), il nome del file mi viene rinominato correttamente.
Quando però vado a modificare il record e voglio cambiare l'immagine, il codice che ho creato mi verifica se è già presente un'immagine, preleva il nome (senza estensione) e lo attribuisce alla nuova immagine che carico. Viceversa se non è presente nessuna immagine, semplicemente carica la nuova immagine rinominandola. Così facendo per quel record ho il nome dell'immagine sempre uguale (e diverso da qualsiasi altra immagine di qualsiasi altro record).
Il problema che non riesco a capire, è perchè se mi trova già un'immagine, non attribuisca alla nuova immagine lo stesso nome.
Vi posto un po' di codice così è più chiaro:
In neretto il controllo se il campo img1_old è compilato o meno. Se lo è, attribuisce alla variabile NomeFile1 il valore di img1_old e l'estensione del file effettivamente uploaddato. Altrimenti attribuisce a NomeFile1 il valore di un certo numero di variabili.codice:Dim percorso_agg percorso_agg = "images/" ByteRicevuti = Request.TotalBytes if ByteRicevuti > 0 then DatiRicevuti = Request.BinaryRead(ByteRicevuti) FileBinario = RSBinaryToString(DatiRicevuti) FirmaFile = left(FileBinario,instr(FileBinario,"" & vbCrLf)-1) ArrPezzi = split(FileBinario,FirmaFile) for item = 1 to ubound(ArrPezzi)-1 Inizio = instr(ArrPezzi(item),"" & vbCrLf & "" & vbCrLf) Intestazione = left(ArrPezzi(item),Inizio-1) Inizio = Inizio + len("" & vbCrLf) + len("" & vbCrLf) ContenutoFile = mid(ArrPezzi(item),Inizio,len(ArrPezzi(item))-Inizio-1) ' Recupero i campi se sono compilati if instr(Intestazione,"img1_old") > 0 then ' nome immagine1 già sul server img1_old = ContenutoFile end if if instr(Intestazione,"data_ins") > 0 then data_ins = ContenutoFile end if if instr(Intestazione,"id") > 0 then id = ContenutoFile end if if instr(Intestazione,"ora") > 0 then ora = ContenutoFile end if if instr(Intestazione,"sezione") > 0 then sezione = ContenutoFile sezione = replace(sezione, "'", "''") end if ' Qui recupero il file da uploadare (se presente) e lo scrivo ' sul server 'FILE 1 if instr(Intestazione,"img1") > 0 then i = instr(Intestazione,"filename=") j = instr(i + 10,Intestazione,chr(34)) NomeUpload = mid(Intestazione,i + 10,j-i-10) i = instrRev(NomeUpload,"\") if i<>0 then NomeFile = mid(NomeUpload,i + 1) else NomeFile = NomeUpload end if if i<>0 then Set FSO = CreateObject("Scripting.FileSystemObject") Upload1 = True DimensioneFile1 = len(ContenutoFile) EstensioneFile1 = right(ContenutoFile,3) If instr(Intestazione,"img1_old") > 0 then NomeFile1 = img1_old & right(NomeUpload,4) Else NomeFile1 = "img1_" & sezione & "_" & data_ins & "_" & ora & right(NomeUpload,4) End If Set textStream = FSO.CreateTextFile(server.mappath(percorso_agg & NomeFile1), True, False) textStream.Write ContenutoFile textStream.Close Set textStream = Nothing Set FSO = Nothing end if end if
Purtroppo nonostante il controllo, l'immagine uploaddata viene sempre e comunque rinominata secondo la condizione Else, anche se img1_old è maggiore di 0 (zero).
Qualcuno ha qualche suggerimento?
Grazie 10.000![]()

Rispondi quotando