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

    uno script da corregere pls :)

    Salve a tutti, mi sono scaricato un piccolo script che consente di fare un semplice upload d'immagini, e articoli in db, dopodichè ho apportato alcune modifiche che mi consentono di controllare l'estensione, se esiste il codice dell'articolo, e stavo elaborando anche il peso, solo che non mi funziona come dovrebbe, potete aiutarmi a perfezionarol perfavore???

    ecco il codice:





    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>controlloVetrina</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script language="javascript1.2" type="text/javascript">
    function foto(vai){
    if (window.confirm("E' già presente un file con lo stesso nome sostituire? \n ATTENZIONE: sostituendo il file tutte le foto con lo stesso nome verranno sostituite.")){
    return true;
    }
    else{
    history.back();
    }

    }

    </script>

    </head>

    <body >

    <%
    if session("login") then

    'Questa variabile setta il percorso di dove effettuare l'upolad
    'la cartella non puo non esistere lo script non la crea ! ! !

    percorso = "/precom/foto/"


    'script per la lettura binaria dei cambi

    ByteRicevuti = Request.TotalBytes

    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)

    ' Recupero i campi se sono compilati

    if instr(Intestazione,"codice") > 0 then
    codice = ContenutoFile
    end if
    if instr(Intestazione,"nome") > 0 then
    nome = ContenutoFile
    end if
    if instr(Intestazione,"descrizione") > 0 then
    descrizione = ContenutoFile
    end if
    if instr(Intestazione,"tipo") > 0 then
    tipo = ContenutoFile
    end if
    if instr(Intestazione,"dispo") > 0 then
    dispo = ContenutoFile
    end if
    if instr(Intestazione,"vetrina") > 0 then
    vetrina = ContenutoFile
    end if
    next

    'Qui controllo che non esista lo stesso codice nel db
    set connessione = server.CreateObject("ADODB.Connection")
    connessione.Open("Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" & server.MapPath("/database/prodotti.mdb"))
    set rec = Server.CreateObject("ADODB.Recordset")
    set rec = connessione.execute("select * from prodotti1 where codice='"&codice&"'")
    'se non c è pocedi

    if rec.eof then
    'Inserimento dati in db
    rec = ("Insert into prodotti1 (categoria, codice, nome, foto, descrizione, disponibilita, vetrina) values ('"&tipo&"','"&codice&"','"&nome&"','"&foto&"','"& descrizione&"','"&dispo&"','"&vetrina&"')")

    'controllo l esito del messaggio
    on Error Resume next
    connessione.execute rec
    if err = 0 then
    rec.close
    set rec = nothing
    'Qui recupero il file da uploadare (se presente) foto1
    if instr(Intestazione,"foto") > 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

    'Qui ricavo l'estensione del file (se presente) per stabilire quale file passa e quale no,
    ' nel mio caso gif e jpeg se non è di questo tipo mi da l'alert e torna dietro
    if NomeFile > "" then
    dim arrParti
    arrParti=split(NomeFile,".")
    dim strEstensione
    strEstensione=arrParti(UBOUND(arrParti))

    Select Case strEstensione
    case "gif","jpeg","jpg"
    'controllo che il file non abbia lo stesso nome di quello presente nella cartella dell upload
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folderObject = fso.GetFolder(Server.MapPath(percorso))
    Set filesObject = folderObject.Files
    For Each file In filesObject
    nomedelfile = fso.GetFileName(file)
    if nomedelfile = NomeFile then
    'Response.write "<script language='javascript'>"
    'Response.write "foto();"
    'Response.Write "</script>"
    Response.Write "non va"
    end if
    next
    ' Scrivo il file sul server
    if i<>0 then
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Upload1 = True
    DimensioneFile1 = len(ContenutoFile)
    'qui va inserito uno script che controlla il il peso dell'immagine
    EstensioneFile1 = right(ContenutoFile,3)
    foto = NomeFile
    Set textStream = FSO.CreateTextFile(server.mappath(percorso & foto), True, False)
    textStream.Write ContenutoFile
    textStream.Close
    Set textStream = Nothing
    Set FSO = Nothing
    end if
    case else
    Response.Write "<script language='javascript'>"
    response.write "alert('E necessrio inserire solo file di tipo .gif .jpeg .jpg o .bmp');"
    response.write "history.back();"
    response.write "</script>"
    end select
    end if
    end if

    response.Redirect("descrizione.asp?codice="&codice )
    risultato = "ok"
    else
    risultato = "ko"
    response.Redirect("errore.htm")
    end if

    else
    Response.Write("E' gia presente un articolo con lo stesso codice nel catalogo")
    Response.Write("Torna indietro")
    Response.Write(" questo è il codice " & codice)
    end if

    end if
    else response.Redirect("login.asp")
    end if
    %>
    </body>
    </html>



    Scusate se il codice è troppo lungo.

    Ciao.

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Con FSO puoi recuperare il file (che è già stato caricato) e verificare il file.Size:

    codice:
    fs.size/1000000 'Mb
    Roby

  3. #3
    grazie roby
    a dire il vero se io faccio:
    1) script lettura binaria
    2) recupero i campi
    3) controllo il file
    4) scrivo il file
    5) controllo se esiste nel db
    6) se no lo inserisco

    mi funziona a volte no, ma spesso mi funziona, mi esce la finestrina del confirm.

    ma se sarebbe assurdo prima fare l'upload e poi scrivere il file nel db, se la procedura dovesse andare a male, quando la rifaccio mi esce il messaggio di avviso.

    con la procedura che mi hai spiegato te, prima carico il file poi, lo controllo.

    Grazie, ciao.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.