Ipload di file ed immagini

di il
19 risposte

Ipload di file ed immagini

Io etto la spugna le ho porvate tutte........
chi di voi sa come si possa eseguire l'upload id un immagine tramte asp?
riesco a creare il pulsante sfoglia ma poi mi manca tutto il codice per memorizzarlo su server <img src=imgfaccinasad.gif border=0 align=middle>

Se fossi modesto sarei perfetto!

19 Risposte

  • Re: Ipload di file ed immagini

    Io sto provando una cosa del genere con ASP.net.....può andare?
    Ho trovato una sorta di guida on-line e sto provando a metterci mano........ Ti posto il codice e provo a darti una spiegazione, magari in due si combina qualcosa di decente!!!

    Allora, la parte di listato HTML è questa:
    <font color=blue>
    <form id="Up" enctype="multipart/form-data" method="post" runat="server">
    <input type="file" runat="server" id="PostedFile">
    <asp:Button Runat="server" ID="Send" Text="Invia" />
    </form>
    </font id=blue>

    Il pezzettino di stringa <font color=red>multipart/form-data</font id=red>è un encoding che serve per specificare che durante il submit del form verranno spediti una sequenza di dati che giustamente poi dovranno essere interpretati.
    Questo pezzo di codice dovrebbe mostrare una pagina con una text-box, un pulsante invia ed un pulsante sfoglia per andare a cercare il file ok?

    Viene poi il pezzo di codice che va messo nell'evento OnClick del pulsante invia:

    <font color=blue>
    private void Send_Click(object sender, System.EventArgs e)
    {

    //Riferimento al file appena inviato
    HttpPostedFile file_sent=PostedFile.PostedFile;

    //Dimensione del file inviato
    int file_size=file_sent.ContentLength;

    //Controlli per dimensione maggiore di zero e diverso da null
    if (file_sent!=null)
    {
    if (file_size>0)
    {
    //Creazione di un buffer di byte
    byte[] dati=new byte[file_size];

    //Lettura dal file e riempimento del buffer
    file_sent.InputStream.Read(dati, 0, file_size);

    string filename = file_sent.FileName;

    //Scrittura del File su disco
    FileStream fs=new FileStream("C:\\" + Path.GetFileName(filename),FileMode.Create);
    fs.Write(dati,0,file_size);
    fs.Close();
    }
    }
    }
    </font id=blue>
    Io stesso ci sto ancora lavorando per tentare di capire bene i pezzi di codice, anche se così a grandi linee comunque non risulta essere troppo complicato, ma sono abbastanza a secco di ASP.net..........
    Spero di essere stato utile!!!!
    CiaoCiao!!

    E' arrabbiato con il mondo, con la propria famiglia e con se stesso.......più che altro è arrabbiato e basta (goblin furioso)
  • Re: Ipload di file ed immagini

    Accidenti ti ringrazio per il post ma purtroppo ci capisco poco ehehehehehe, premetto che ho cominciato la programmazione un mese fa quindi ancora sono poco nell'ottica, ora la domanda sorge spontanea, posso unase asp e asp.net assieme? a quel che mi risulta no! cmq se vengo a capo di tutto ti faccio sapere
    per ora posso postarti il codice di uno script recuperato da terzi che pare serva molto alla mia funzione, e composto da due pagine:

    PAGNA_1

    <html>
    <head>
    <title>UPLOAD FILE</title>
    </head>
    <body>

    <!-- form selezione file -->
    <table border=0 width=360 bgcolor=#40576f cellspacing=1 align=center>
    <tr>
    <td width=400 align=center bgcolor=#40576f><FONT FACE="tahoma" color=#ffffff size=2><b>SELEZIONARE IL FILE PER L'UPLOAD</b></FONT></td>
    </tr>
    <tr>
    <td width="400" height="0" bgcolor="#E6E6FF">
    <form method="POST" enctype="multipart/form-data" action="upload.asp">
    <p align="center"><b><font color="#000080" size="2" face="Arial"><br>
    File: </font></b><input type="file" name="blob" size=30><br>
    <input type="submit" name="Enter" value="Aggiungi">
    </form>
    </td>
    </tr>
    <tr>
    <td width="400" height="10" bgcolor="#40576f" align=right><a href=http://www.aspcode.it><font face=arial size=1 color=#ffffff><i>www.aspcode.it</i></font></a></td>
    </tr>
    </table>
    <!-- form selezione file -->

    </body>
    </html>

    PAGINA_2

    <%
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'Upload con ASP by ASPCode.it - http://www.aspcode.i '
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'variabili di configurazione
    Dim folder
    folder = "\foto" 'directory sul server con accesso in scrittura
    'fine variabili di 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("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

    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")

    '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
    %>

    <html>
    <head>
    <title>UPLOAD FILE</title>
    </head>
    <body>

    <!-- conferma upload file -->
    <table border=0 width=360 bgcolor=#40576f cellspacing=1 align=center>
    <tr>
    <td width=400 align=center bgcolor=#40576f><FONT FACE="tahoma" color=#ffffff size=2><b>Il file <%=filename%> è stato uploadato con successo.</b></FONT></td>
    </tr>
    <tr>
    <td width="400" height="30" bgcolor="#E6E6FF" align=center><a href=uploadform.asp><font face=arial size=2 color=black>< < UPLOAD DI UN ALTRO FILE</font></a></td>
    </tr>
    <tr>
    <td width="400" height="10" bgcolor="#40576f" align=right><a href=http://www.aspcode.it><font face=arial size=1 color=#ffffff><i>www.aspcode.it</i></font></a></td>
    </tr>
    </table>
    <!-- conferma upload file -->

    </body>
    </html>

    questo e quanto ciauuuz

    Se fossi modesto sarei perfetto!
  • Re: Ipload di file ed immagini

    Azz......è una cifra di codice!!!!! Buono studio davvero!!! (adesso però gli do un'occhiata anche io!!)
    Per quanto riguarda il funzionare assieme, non sono sicuro......una cosa è certa: sul server che va ad accogliere le pagine aspx, deve essere installato asp.net, altrimenti nada.
    Naturalmete con asp.net puoi aprire file asp ma non viceversa!!

    La cosa buona è che con ASP.net ti risparmi parecchio codice nello scrivere, perchè molte funzionalità sono autoimplementate da oggetti ben definiti, quindi rimangono più facili da scrivere e sono più comprensibili.....ma secondo me, una base almeno di ASP è necessaria!!!

    CiaoCiao!!

    E' arrabbiato con il mondo, con la propria famiglia e con se stesso.......più che altro è arrabbiato e basta (goblin furioso)
  • Re: Ipload di file ed immagini

    Ciao, morph3us
    ti mando il codice che ho usato io in alcuni lavori che ho fatto. E' molto semplice.
    Hai tre files.

    1) modulo.asp oppure .html
    2) outputFile.asp
    3) upload.asp

    Nel file modulo.asp inserisci:

    <FORM METHOD="Post" ENCTYPE="multipart/form-data" ACTION="outputFile.asp">
    <font face="Verdana" size="2">Immagine : <INPUT TYPE="file" NAME="blob" size="50"><BR>
    <INPUT TYPE="submit" NAME="Cambia immagine" VALUE="Cambia immagine">
    </font>
    </FORM>


    Nel file outputFile.asp:

    <!--#include file="upload.asp"-->
    <%Response.Expires=0
    Response.Buffer = TRUE
    Response.Clear
    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")

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

    'Create and Write to a File
    pathEnd = Len(Server.mappath(Request.ServerVariables("PATH_INFO")))-14
    Set MyFile = ScriptObject.CreateTextFile(Left(Server.mappath(Request.ServerVariables("PATH_INFO")),pathEnd) & filename)

    For i = 1 to LenB(value)
    MyFile.Write chr(AscB(MidB(value,i,1)))
    Next
    MyFile.Close
    %>


    Infine nel file upload.asp:


    <%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")
    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

    %>




    Carica tutti i file sul server facendo attenzione ai permessi della directory e tutto funziona. Non è molto difficile, puoi tranquillamente fare un cut & paste.
    Spero di averti facilitato le cose ed esserti stato d'aiuto ciao.
  • Re: Ipload di file ed immagini

    P.S. forse è meglio un copy & paste
  • Re: Ipload di file ed immagini

    Cari esperti buongiorno anch'io mi sto dilettando a mettere su un sito web uno script upload e non riesco a caricare la foto sul web.Ho copiato tutti gli script della vostra conversazione ma dopo aver caricato l'immagine si apre una pagina di errore.non si deve per caso inserire nei codice la stringa di riferimento di un indirizzo del mio sito?
    Fred
  • Re: Ipload di file ed immagini

    Scusate, nessuno ha mai provato a sostituire il nome del file outputfile.asp con qualsiasi altra cosa, ottenendo come risultato "impossibile trovare il percorso"?
    Sembrerebbe che la sostituzione creasse problemi. A me sembra impossibile un tale comportamento, ma mi è capitato.
    Buon lavoro a tutti
  • Re: Ipload di file ed immagini

    Peppe sei stato gentilissimo! è possibile sapere come si possono visualizzare in homepage.asp gli ultimi 5 elementi uplodati?
  • Re: Ipload di file ed immagini

    Errata corrige!
    Ho scoperto la risposta al mio quesito che, se di interesse, vea la riporto.
    In pratica il problema era insito nella seguente riga

    pathEnd = Len(Server.mappath(Request.ServerVariables("PATH_INFO")))-14

    dove -14 sta ad indicare quanti sono i caratteri della pagina in esecuzione.
    Pertanto, per chiamare come si vuole la pagina di upload, è sufficiente modificare questo valore, calcolandone appunto la lunghezza (ad es. upload.asp = 14) oppure sostituendola con la seguente:

    pathEnd = InstrRev(Server.mappath(Request.ServerVariables("PATH_INFO")),"\")-1

    Scusate per la cretinata commessa.
    Buon lavoro a tutti

  • Re: Ipload di file ed immagini

    Ciano.... Cretinata a parte mi hai quasi illuminato.. io sono comunque arrivato ad un buon punto adesso o script funge e tutto sembra filare liscio, l'unico dramma e che se non carico sempre un immagine non posso inserire nemmeno i dati dei campi testo

    Se fossi modesto sarei perfetto!
  • Re: Ipload di file ed immagini

    Nella pagina outputfile.asp, dopo la riga

    value = UploadRequest.Item("blob").Item("Value")
    inserisci un controllo:
    If value <> "" then
    ... pubblica il file
    End If

    scrivi i dati raccolti dal form nel DB.

    Fa attenzione:
    non utilizzare Request.Form per il recupero dei valori del campo, bensì:
    Set UploadRequest = CreateObject("Scripting.Dictionary")
    UploadRequest.Item("nomeCampoForm").Item("Value")
    ..
    altrimenti ti da il solito errore che non puoi utilizzare il request dopo il metodo binary.
    Ti chiedo scusa per la mia imprecisione e scarso lessico, ma ti devi accontentare.
    Ciao e buon lavoro
  • Re: Ipload di file ed immagini

    Ciao a tutti... Anche io sono un programmatore alle prime armi. Ho letto tutte le risposte ma non ho capito praticamente niente... Scusate tanto ma non riesco a trovare il sistema caricare un file sul server. Ho provato con degli script asp già pronti ma non funzionano... Riesco a creare tutta la pagina per l'invio ma non riesco a creare lo script per caricarlo. Qualcuno mi può aiutare??? Anche un suggerimento... Grazie a tutti... Buon lavoro!!!
  • Re: Ipload di file ed immagini

    Io ho trovato uno script già pronto che funziona benissimo!!
    Sono 3 file più altri file di esempio che danno una mano per parecchie esigenze!!
    Per chiunque volesse, lasciate la mail..ve lo spedisco volentieri.
    Ciao!!


    E' arrabbiato con il mondo, con la propria famiglia e con se stesso.......più che altro è arrabbiato e basta
    (goblin furioso)
  • Re: Ipload di file ed immagini

    Grazie io lo prendo volentieri :D nel frattempo ti posso mandare quello che sono riuscito a trovare io
    ciaoooo





    Se fossi modesto sarei perfetto!
Devi accedere o registrarti per scrivere nel forum
19 risposte