Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    invio file a server e controllo nome

    ciao ragazzi... vi sottopongo un altro quesito....
    tramite un form (enctype=multipart/form-data) devo inviare un'immagine ad un server. Per fare ciò uso il campo <input type="file" name="file1">.
    Al submit la pagina di destinazione del form contiene una routine che dopo aver verificato l'esistenza o meno di una data cartella (e se necessario la crea), copia il file nella cartella. Fin qui tutto a posto.
    Devo però fare anche un controllo di questo tipo: se la cartella esiste, VERIFICA SE C'E' GIA' UN FILE CON LO STESSO NOME. questa procedura la devo mettere PRIMA della copia del file, altrimenti se esiste un file di nome uguale me lo sovrascrive.
    E' possibile recuperare il nome del file che ho selezionato da copiare sul server dall'input name="file1" utilizzando un request o qualche altro accrocchio? a me servirebbe sapere il nome del file PRIMA che questo venga copiato nella sua cartella di destinazione, altrimenti non posso esitare la sovrascittura........
    Meglio tacere e dare l'impressione di essere stupidi piuttosto che parlare e togliere ogni dubbio.

  2. #2
    ciao io uso il codice seguente

    nomefile=oUpl.form("file").userfilename
    nomefile = Right(nomefile,Len(nomefile)-InstrRev(nomefile,"\"))

    la prima riga è una propietà del componente di upload installato che mi dice la path in locale del file da quella estraggo il nome del file (seconda riga) da qui lo uso come volgio nel tuo caso verificando se già presente.


    Ciao

  3. #3
    Nell'istruzione oUpl.form che cos'è oUpl? il nome di un campo? Provato così com'è mi da errore di object required su questa riga...
    Meglio tacere e dare l'impressione di essere stupidi piuttosto che parlare e togliere ogni dubbio.

  4. #4
    ciao

    si oUPL è l'oggetto del componente che gestisce l'upload ; il nome dipenda dal nome che hai dato all'oggetto creato per fare l'upload.

    che componente utilizzi per gli upload?

  5. #5
    Ilcodice che uso io è questo e l'ho trovato a mia volta su un forum (credo)......



    percorso = "immagini/"

    ByteRicevuti = Request.TotalBytes
    if ByteRicevuti > 350000 then
    response.write "Il file che stai cercando di caricare supera i 350 Kb imposti. Diminuire la dimensione del file e ricaricarlo in un secondo tempo. Premere il pulsante indietro nel browser."
    else
    if ByteRicevuti > 0 then
    DatiRicevuti = Request.BinaryRead(ByteRicevuti)
    For i = 1 To lenB(DatiRicevuti)
    FileBinario = FileBinario & chr(ascB(midB(DatiRicevuti,i,1)))
    Next
    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)
    ' Qui recupero il file da uploadare (se presente) e lo scrivo
    ' sul server
    if instr(Intestazione,"file1") > 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)
    NomeFile1 = NomeFile
    Set textStream = FSO.CreateTextFile(server.mappath(percorso & NomeFile1), True, False)
    textStream.Write ContenutoFile
    textStream.Close
    Set textStream = Nothing
    Set FSO = Nothing
    end if
    end if

    next
    end if
    end if
    Meglio tacere e dare l'impressione di essere stupidi piuttosto che parlare e togliere ogni dubbio.

  6. #6
    Benissimo allora il nome del file lo hai già in questo codice


    Originariamente inviato da frodo
    Ilcodice che uso io è questo e l'ho trovato a mia volta su un forum (credo)......



    percorso = "immagini/"

    ByteRicevuti = Request.TotalBytes
    if ByteRicevuti > 350000 then
    response.write "Il file che stai cercando di caricare supera i 350 Kb imposti. Diminuire la dimensione del file e ricaricarlo in un secondo tempo. Premere il pulsante indietro nel browser."
    else
    if ByteRicevuti > 0 then
    DatiRicevuti = Request.BinaryRead(ByteRicevuti)
    For i = 1 To lenB(DatiRicevuti)
    FileBinario = FileBinario & chr(ascB(midB(DatiRicevuti,i,1)))
    Next
    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)
    ' Qui recupero il file da uploadare (se presente) e lo scrivo
    ' sul server
    if instr(Intestazione,"file1") > 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
    A questo punto il nome del file lo hai già ed è rappresentato dalle variabili NomeFile

    Quello che devi fare è inserire un controllo dopo il primo if qui di seguito utilizzando le proprietà del FileSystemObject



    if i<>0 then
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Upload1 = True
    DimensioneFile1 = len(ContenutoFile)
    EstensioneFile1 = right(ContenutoFile,3)
    NomeFile1 = NomeFile
    Set textStream = FSO.CreateTextFile(server.mappath(percorso & NomeFile1), True, False)
    textStream.Write ContenutoFile
    textStream.Close
    Set textStream = Nothing
    Set FSO = Nothing
    end if
    end if

    next
    end if
    end if
    Puoi lasciar perdere il mio post precedente perchè nello script non usi un componente quindi potrebbe essere fuorviante

  7. #7
    per costruire l'if in questione puoi consultare il link

    http://www.sloppycode.net/fso/

    dove si parla del filesystemobject e delle sue proprietà

    in particolare ti potrà essere utile la proprietà

    FSO.FileExists(filename)

  8. #8
    ragazzi siete mitici!!!!!!
    ora l'unico inconveniente è ke la verifica del nome del file è molto lenta.... nel senso che il rimo upload è abbastanza veloce, ma quando carico la secondoa immagine con lo stesso nome ci mette molto tempo a restituirmi il messaggio "file già esistente".. avete suggerimenti per accelerare la cosa?

    tks!!!!!
    Meglio tacere e dare l'impressione di essere stupidi piuttosto che parlare e togliere ogni dubbio.

  9. #9
    su questo mi sa che non posso esserti tanto di aiuto solo faccio una considerazione :

    non so se usi XP PRO con su IIS se è così considera che anche a me ha dato diversi problemi (soprattuto di rallentamento ) nella gestione degli oggetti del FSO per cui potrebbe essere dovuto a questo .

    P.S.: una parentesi che non ci combina niente ho visto il sito linkato al tuo nick come homepage bel sito e se le foto le fai te complimenti ....

  10. #10
    Scusate ho cercato di seguire la vostra discussione e mi ha interessato molto.
    Io devo fare un upload in asp.
    Vi ho sentito parlare di oUPL ma non ho capito che cosa è ne tanto meno come funziona.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.