Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    per cambiare nome a file in upload

    Salve, ho un modulo per l'inseirmento di dati in un db compreso l'upload di un file. Funziona tutto però vorrei che se c'è già un file con lo stesso nome venga in automatico rinominato (per esempio se nella cartella c'è un file immagine.jpg e faccio l'upload di un file con lo stesso nome il nome venga modificato in automatico in immagine_1.jpg).
    Di seguito lo script dell'inserimento dati nel DB con l'upload
    codice:
     ' inizio
    dim w_ID, w_QSIDAnimal, w_QSIDUtente, w_QSSCategoria, w_QSnomeanimale, w_QSrazza, w_QSsesso, w_QSsegniparticolari, w_QSdescrizione, w_QSnatoil, w_QSmortoil, w_QSUserID, w_PFoto
    dim w_CPrezzo, w_RPrezzo, w_SPrezzo, w_PuntiSconto, w_Iva, w_GiacenzaInfinita, w_Giacenza, w_Offerta
    dim w_Spedizione, w_SpeseSpedizione, w_Tipologia, w_Categorie, w_Correlati, w_Home
    dim percorso, ByteRicevuti, FileBinario, DatiRicevuti, FirmaFile, ArrPezzi, item, Inizio
    dim Intestazione, ContenutoFile, NomeUpload, NomeFile, Upload1, DimensioneFile1, EstensioneFile1, textStream, i, j
    dim FSO, NomeFile1, Upload2, DimensioneFile2, EstensioneFile2, NomeFile2, NomeFile3, Upload3, DimensioneFile3, EstensioneFile3
    
    
    'Questa variabile setta il percorso di dove effettuare l'upolad
    'la cartella non puo non esistere lo script non la crea ! ! !
    Dim folder
    Dim titolo_file
    Dim nom_file
    Dim byteCount
    Dim RequestBin
    Dim PosBeg
    Dim char
    Dim PosEnd
    Dim boundary
    Dim boundaryPos
    Dim Pos
    Dim intCount
    Dim Name
    Dim PosFile
    Dim PosBound
    Dim Value
    Dim FileName
    Dim ContentType
    Dim nome_file
    Dim filepathname
    Dim ScriptObject
    Dim MyFile
    Dim nome_file2, max, nome_file3, max2, max3
    
    
    ' //// Directory dove verrà caricato il file 
    folder = "/public"
    
    
    ' ////// Inizio Componente Upload   
    
    
    Response.Expires=0
    Response.Buffer = TRUE
    Response.Clear
    
    
    Sub BuildUploadRequest(RequestBin)
        PosBeg = 1
        PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
        boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
        boundaryPos = InstrB(1,RequestBin,boundary)
            Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
            Dim UploadControl
            Set UploadControl = CreateObject("Scripting.Dictionary")
            'Get an object name
            Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))
            Pos = InstrB(Pos,RequestBin,getByteString("name="))
            PosBeg = Pos+6
            PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
            Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
                PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename="))
                PosBound = InstrB(PosEnd,RequestBin,boundary)
                If  PosFile<>0 AND (PosFile<PosBound) Then
                PosBeg = PosFile + 10
                PosEnd =  InstrB(PosBeg,RequestBin,getByteString(chr(34)))
                FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
                UploadControl.Add "FileName", FileName
                Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
                PosBeg = Pos+14
                PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
                ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
                UploadControl.Add "ContentType",ContentType
                PosBeg = PosEnd+4
                PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
                Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
                Else
                Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
                PosBeg = Pos+4
                PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
                Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
            End If
            UploadControl.Add "Value" , Value    
            UploadRequest.Add name, UploadControl    
            BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
        Loop
    End Sub
    Function getByteString(StringStr)
     For i = 1 to Len(StringStr)
         char = Mid(StringStr,i,1)
        getByteString = getByteString & chrB(AscB(char))
     Next
    End Function
    Function getString(StringBin)
     getString =""
     For intCount = 1 to LenB(StringBin)
        getString = getString & chr(AscB(MidB(StringBin,intCount,1))) 
     Next
    End Function
    
    
    byteCount = Request.TotalBytes
    
    
    RequestBin = Request.BinaryRead(byteCount)
    Dim UploadRequest
    Set UploadRequest = CreateObject("Scripting.Dictionary")
    BuildUploadRequest  RequestBin
    
    
    ' //// Fine Componente Upload  
    
    
    
    
    w_QSIDUtente = UploadRequest.Item("Utente").Item("Value")
    w_QSSCategoria = UploadRequest.Item("SCategoria").Item("Value")
    w_QSnomeanimale = UploadRequest.Item("nomeanimale").Item("Value")
    w_QSrazza = UploadRequest.Item("Razza").Item("Value")
    w_QSsesso = UploadRequest.Item("Sesso").Item("Value")
    w_QSsegniparticolari = UploadRequest.Item("segniparticolari").Item("Value")
    w_QSnatoil = UploadRequest.Item("natoil").Item("Value")
    w_PFoto = UploadRequest.Item("PFoto").Item("Value")
    
    
    '----------Prima foto
        if UploadRequest.Item("UPlFotop").Item("FileName")="" then
    
    
            Else
            AutoRename  = UploadRequest.Item("UPlFotop").Item("FileName")
            contentType  = UploadRequest.Item("UPlFotop").Item("ContentType")
            filepathname = UploadRequest.Item("UPlFotop").Item("FileName")
            filename     = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
            value        = UploadRequest.Item("UPlFotop").Item("Value")
    
    
        Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
    
    
        Set MyFile = ScriptObject.CreateTextFile(Server.mappath(folder)&"\"&filename)
    
    
                For i = 1 to LenB(value)
                        MyFile.Write chr(AscB(MidB(value,i,1)))
                        Next
                MyFile.Close
            w_PFoto = filename
        End if
    
    
        
    w_PFoto="public/"&w_PFoto
    ' ora la pagina prosegue come prima, ma non usa i campi del form, bensì quelli recuperati da me
    ' fine
    come posso modificarlo?

    Grazie

  2. #2
    prima di questa istruzione

    Set MyFile = ScriptObject.CreateTextFile(Server.mappath(folder) &"\"&filename)
    devi cercare il file Server.mappath(folder)&"\"&filename sempre con FSO, e se esiste già cambiare il valore della variabile filename. attenzione a fare questo in un loop, perché anche il file rinominato potrebbe esistere...

  3. #3
    ti consiglio di fare una paginetta con solo la routine di ricerca e rinomina, così puoi fare dei test. quando è ok la integri nel main

  4. #4
    Mi potresti fare un esempio più pratico? Grazie

    Quote Originariamente inviata da optime Visualizza il messaggio
    prima di questa istruzione

    Set MyFile = ScriptObject.CreateTextFile(Server.mappath(folder) &"\"&filename)
    devi cercare il file Server.mappath(folder)&"\"&filename sempre con FSO, e se esiste già cambiare il valore della variabile filename. attenzione a fare questo in un loop, perché anche il file rinominato potrebbe esistere...

  5. #5
    Quote Originariamente inviata da Newbie1980 Visualizza il messaggio
    Mi potresti fare un esempio più pratico? Grazie
    per evitare che "fammi un esempio pratico" diventi "scrivi il codice al posto mio" ti posto il link alle risorse http://www.w3schools.com/asp/asp_ref_filesystem.asp

    in particolare qui http://www.w3schools.com/asp/showfil...emo_fileexists trovi come si testa se un file esiste.
    Inizia a scrivere qualcosa poi lo sistemiamo assieme

  6. #6
    grazie dei suggerimenti.
    Ho risolto riesco ad inserire i dati nel DB e a fare l'upload, però non riesco ad effettuare l'aggiornamento dei dati.

    Ho questo script per l'nserimento e l'aggiornamento
    codice:
    <!--#include file="upload.asp"-->
        QSID = request.QueryString("id")
    Dim oUpload
    Set oUpload= new cUpload
    With oUpload
    
    
    'La riga seguente impoosta la connessione al database e la tabella di inserimento dati
    'La connesione e la tabella verranno aperti con il metodo oUpload.Database.Open()
    .SetDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath("/mdb-database/NOMEDB.mdb"),"SELECT * FROM TABELLA1 WHERE ID= " & QSID & ";"
    .EnabledAspUpload	= False
    .EnabledImageSize	= False
    .EnabledLog 		 = False
    .AutoRename 		 = True
    .Overwrite			 = False
    .SetPath "\public\"
    .Load
    .MoveFirst
    if .EOF then
    	NumFiles = .Count()
    	Response.write "0 Files caricati su " & NumFiles &" : controlla le dimensioni e il tipo di file."
    else
    	.Database.Open()
    	While Not .EOF
    			.Save
    			response.Write "il file " & .GetFileName &" è stato salvato <br>"
    			'Inserimento dei valori
    			.Database.Fields("Foto") = .GetFileName
    			'Inserimento
    			.Database.Update()
    	.MoveNext
    	Wend
    end if
    End With
    Set oUpload = Nothing
        Response.Redirect "scheda_profilo.asp"
    Non mi passa l'id.

    Come posso risolverlo?
    Grazie

  7. #7
    che vuol dire "non mi passa l'id"?

  8. #8
    allora io devo aggiornare dei dati in un db.
    Dal form mi passo l'id del record da aggiornare
    codice:
    <input type="hidden" id="idRECORD" name="idRECORD" value="<%=idRECORD%>" class="utente input" />
    però quando aggiorno mi da il seguente errore
    codice:
    Microsoft JET Database Engine error '80040e14'
    Syntax error (missing operator) in query expressionidRECORD='.
    /upload.asp, line 1152
    


    la riga di codice 1152 (del file upload.asp) che mi da errore è la seguente
    codice:
    
    
    codice:
    Rs.Open RecordsetOrQuery,Conn,3,3
    


    come posso risolverlo?
    Grazie

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    ma dalla pagina form alla pagina upload id lo passi in querystring (cioè nella url ?id=valore) o lo passi in post (vedi campo hidden)?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  10. #10
    Lo passo in post


    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    ma dalla pagina form alla pagina upload id lo passi in querystring (cioè nella url ?id=valore) o lo passi in post (vedi campo hidden)?

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.