Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di naverit
    Registrato dal
    Apr 2002
    Messaggi
    460

    upload solo immagini (limitare le estensioni)

    uso il modulo qui sotto per caricare files e va bene ma ora vorrei limitare il tipo di files alle solo immagini ( .jpg .jpeg .png .gif)!!!
    come faccio a fare in modo che se carico un file con estensione diversa da quelle volute esca un messaggio di errore o venga reindirizzato ad una pagina di errore???
    ovviamente anche l'upload deve essere impedito!



    <%

    ''''''''''''''''''''''''''''''''''' INIZIO CONFIGURAZIONE:

    Dim folder 'directory sul server con accesso in scrittura (x caricare il file)
    folder = "\public\opere\temp"
    'folder = "../../public/opere" 'directory sul server con accesso in scrittura

    Dim cartellaImmagini 'directory sul server con accesso in scrittura (x rinominare il file

    cartellaImmagini = "e:\web\nomesito.com\public\opere\" ' Percorso x rinominare le immagini
    cartellaImmaginiTemp = "e:\web\nomesito.com\public\opere\temp\" ' Percorso x rinominare le immagini

    ''''''''''''''''''''''''''''''''''' FINE CONFIGURAZIONE:


    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("Conte nt-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("filen ame="))
    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),Requ estBin,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

    contentType = UploadRequest.Item("blob").Item("ContentType")
    filepathname = UploadRequest.Item("blob").Item("FileName")
    filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
    value = UploadRequest.Item("blob").Item("Value")
    ultimo_id=UploadRequest.Item("ultimo_id").Item("Va lue")
    img=UploadRequest.Item("img").Item("Value")

    'Create FileSytemObject Component
    Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")

    'Create and Write to a File
    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
    %>


    <%

    stringa = filename
    valori = Split(stringa,".")
    nome = valori(0)
    estensione = valori(1)

    %>


    <%

    if img = "" then

    ' Rinomino l'immagine sul server
    Set Fso = Server.CreateObject("Scripting.FileSystemObject")
    Fso.moveFile cartellaImmaginiTemp & filename , cartellaImmagini & ultimo_id& "." & estensione
    Set Fso = Nothing

    else

    ' Rinomino l'immagine sul server
    Set Fso = Server.CreateObject("Scripting.FileSystemObject")
    Fso.moveFile cartellaImmaginiTemp & filename , cartellaImmagini & ultimo_id & "-" & img & "." & estensione
    Set Fso = Nothing

    end if

    %>
    Ars longa...vita brevis.

  2. #2
    gioca sul nome del file.....metti una serie di

    if ((instr(filename,"jpg")<0) or (instr(filename,"gif"))......) then

    messaggio di errore

    else

    upload

    end if

    altrimenti usa l'upload di BAOL che già ha previsto questa funzione.......

  3. #3
    Utente di HTML.it L'avatar di naverit
    Registrato dal
    Apr 2002
    Messaggi
    460
    ok, ma per fare questo, cioè ricavare l'estensione... devo aver caricato prima l'immagine sul server... oppure posso farlo anche prima?


    wuesto è il codice che uso per fare l'upload:



    <%
    ultimo_id = Request.Querystring("ultimo_id")
    img = Request.Querystring("img")
    skip = Request.Querystring("skip")
    back = Request.Querystring("back")
    %>

    <html>
    <head></head>
    <body>

    <table width="520" border="0" width="20" bgcolor="#76B911" cellpadding="5" align="center">

    <td height="0" bgcolor="white">
    <form method="POST" enctype="multipart/form-data" action="upload.asp?ultimo_id=<%=ultimo_id%>">
    <input type="hidden" name="ultimo_id" value="<%=ultimo_id%>">
    <input type="hidden" name="img" value="<%=img%>">
    <p align="center"><font color="#000080" size="2" face="Arial">

    File: </font>
    <input type="file" name="blob" size=30>

    <input type="submit" name="Enter" value="Aggiungi">
    </form>



    </td>
    </tr>
    </table>

    </body>
    </html>
    Ars longa...vita brevis.

  4. #4
    puoi farlo anche prima.......
    codice:
    contentType = UploadRequest.Item("blob").Item("ContentType")
    filepathname = UploadRequest.Item("blob").Item("FileName")
    filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
    value = UploadRequest.Item("blob").Item("Value")
    ultimo_id=UploadRequest.Item("ultimo_id").Item("Value") 
    img=UploadRequest.Item("img").Item("Value")
    vedi un pò che filename dovrebbe essere il nome con cui poi viene salvato il file dopo l'upload......potresti controllare su questo......

  5. #5
    Utente di HTML.it L'avatar di naverit
    Registrato dal
    Apr 2002
    Messaggi
    460
    cioè intendi che dovrei fare qualcosa del genere? è così che fa il controllo prima di caricare l'immagine oppure ho sbagliato il punto in cui fare il controllo?


    contentType = UploadRequest.Item("blob").Item("ContentType")
    filepathname = UploadRequest.Item("blob").Item("FileName")
    filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
    ' filename è il nome del file che sto per caricare

    stringa = filename
    valori = Split(stringa,".")
    'nome = valori(0)
    estensione = valori(1)


    if estensione = ".gif" or estensione = ".jpg" or estensione = ".png" then
    value = UploadRequest.Item("blob").Item("Value")
    ' continuo a caricare l' immagine
    '...........
    else
    ' Non carico perchè non è un'immagine
    end if
    Ars longa...vita brevis.

  6. #6
    guarda mi sa che fai prima a usare l'upload di baol.....anche perchè quando splitti il nome del file per separare nome da estensione non è tanto corretto....perchè nel caso ci sia un punto nel nome del file ti sbraga un pò tutto......mentre con l'upload di baol ti posso passare un esempio già fatto

  7. #7
    Utente di HTML.it L'avatar di naverit
    Registrato dal
    Apr 2002
    Messaggi
    460
    fammi vedere l'esempio...
    Ars longa...vita brevis.

  8. #8
    qui controllo sia l'estensione che la grandezza.......
    codice:
    <%
    Dim oUpload
    Set oUpload= new cUpload
    With oUpload
    .EnabledAspUpload = False
    .EnabledImageSize = TRUE
    .EnabledLog = False
    .AutoRename = True
    .Overwrite = False
    .SetPath "img\"
    .Load
    .UploadOnly "Images"
    if instr(.GetFileName(),"jpg")>0 then
    nome=.GetFileName()
    While Not .Eof
    If .Files("Height")<>100 or .Files("Width")<>100 then
     Response.write ("Le dimensioni dell'immagine " &_
     .GetFileName() &" non sono corrette (" &_
     .Files("Height") &"x" & .Files("Width") &"): File non caricato
    "  )
     %>
    <%
    else
     .Save
     response.write "Il file " &.GetFileName() & " è stato salvato con successo"
    end if
    .MoveNext
    Wend
    else
     Response.write ("Ti è consentito inserire solo immagini JPG " &_
     .GetFileName() &" non caricato")
    end if
    End With
    Set oUpload = Nothing
    %>

  9. #9
    Utente di HTML.it L'avatar di naverit
    Registrato dal
    Apr 2002
    Messaggi
    460
    interessante... quindi questo lo fa prima di caricare sul server? vero?
    Ars longa...vita brevis.

  10. #10

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.