Guide On-line
Il Blog di Hosting SolutionsBlog Facebook Twitter Instagram YouTube

Guide - Utilità, Esempi

Asp Smart Upload

ATTENZIONE La guida seguente ha contenuti obsoleti, quindi alcune indicazioni potrebbero risultare inapplicabili ed alcuni link non funzionanti

Sui piani Hosting Windows è disponibile la libreria AspSmartUpload, utile per effettuare l'upload di file sul server tramite script in linguaggio ASP. Di seguito sono riportati alcuni esempi di codice.

Importante:

  • Per poter funzionare correttamente, gli script di upload necessitano che la cartella di destinazione del trasferimento sia impostata con i permessi di scrittura. È possibile effettuare questa configurazione attraverso il pannello di controllo ServerMate, alla voce permessi cartelle e files
  • Assicurarsi che il percorso di destinazione del trasferimento sia corretto e sia quindi all'interno del proprio spazio. Poichè l'oggetto AspSmartUpload lo consente, il consiglio è quello di indicare percorsi (path) virtuali a partire dalla radice (root) del sito web, come riportato nell'esempio di seguito.
  • Upload misto di uno o più file e di un campo testo
  • Questo è un esempio di uno script completo che esegue l'upload di file sul server. Si suppone che sul sito esista la cartella con percorso virtuale /uploadtest e che su di essa siano stati configurati i permessi di scrittura attraverso il pannello di controllo.

    upload.asp

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <HTML>
    <head>
    <title>upload test page</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body bgcolor="#FFFFFF" text="#000000">
    <%
    Dim myUpload
    Dim intCount
    if Request.Totalbytes > 0 then
      On Error Resume Next 
        Set myUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
        myUpload.upload
        'Esegue il caricamento dei file sul server
        '********************************
        For each file In myUpload.Files
          If not file.IsMissing Then
            file.SaveAs("/uploadtest/" & file.FileName)
          end if
        Next
        ' Intercetta gli errori
        ' ***********
        If Err Then
          Response.Write("<br><br><b>Selezione errata : </b>" 
          & Err.description & "<br><a href=""upload.asp"">riprova</a>")
        Else
            For each file In myUpload.Files
             '  Solo se il file esiste
             '  **********************
              If not file.IsMissing Then
              '  mostra le proprietà del file caricato
              '  ******************************************
               Response.Write("Name = " & file.Name & "<br>")
               Response.Write("Size = " & file.Size & "<br>")
               Response.Write("FileName = " & file.FileName & "<br>")
               Response.Write("FileExt = " & file.FileExt & "<br>")
               Response.Write("FilePathName = " & file.FilePathName & "<br>")
               Response.Write("ContentType = " & file.ContentType & "<br>")
               Response.Write("ContentDisp = " & file.ContentDisp & "<br>")
               Response.Write("TypeMIME = " & file.TypeMIME & "<br>")
               Response.Write("SubTypeMIME = " & file.SubTypeMIME & "<br>")
               Response.Write("**************************<br><br>")
               intCount = intCount + 1
              End If
             Next
          Response.write("==========<br>" & myUpload.form("commenti"))
          Response.Write("  <br><br>Upload di " 
          & intCount & " file eseguito correttamente.
          <br><a href=""upload.asp"">nuovo upload</a>")
        End If
        set myUpload = nothing
    Else
    'HTML %>
      <form method="post" action="upload.asp" 
      name="fileform" enctype="multipart/form-data">
        <table width=400 border=0>
          <tr>
            <th>
              commento
            </th>
            <td> 
            <textarea name="commenti" rows="3" cols="25"></textarea>
            </td>
          </tr>
          <tr>
            <th>
              seleziona i file:
            </th>
            <td>
              <input type="file" name="file1" size="15">
              <input type="file" name="file2" size="15">
              <input type="file" name="file3" size="15">
              <br>
              <input type="submit" value="invia" name="pulsante">
            </td>
          </tr>
        </table>
      </form>
    <%
    End if
    %>
    </body>
    </html>

    Osservare che, poichè si sta utilizzando un form enctype="multipart/form-data", i campi del form non sono accessibili da ASP semplicemente con Request("nome_del_campo").

    Questo può essere un problema quando si tratta di stabilire se sia stato effettuato il submit (e quindi sia necessario caricare i file sul server) oppure se si stampa a video il form per l'immissione dati. Una soluzione può essere quella di utilizzare la proprietà request.Totalbytes, che rappresenta la dimensione dei dati inviati. Se è maggiore di zero, allora vi sono dei dati inviati e quindi si procede all'upload.

    L'upload viene effettuato sfruttando la collection File dell'oggetto SmartUpload./p>

    Lo script sopra, è ovviamente personalizzabile, modificando, ad esempio, il numero di file da caricare sul server, aggiungendo o togliendo un campo input di tipo file nel form di immissione dati.

  • Collezioni, Caratteristiche, Metodi
  • Qui di seguito una breve descrizione delle caratteristiche e dei metodi dell'oggetto SmartUpload

    Guida in inglese: ASPSMARTUPLOAD : DOCUMENTATION

    Supponiamo di aver istanziato l'oggetto myUpload, tramite Set myUpload = Server.CreateObject("AspSmartUpload.SmartUpload")

    Collezioni:

    • Files: contiene tutti gli oggetti File
    • Form: contiene tutti gli oggetti Item del form

    Caratteristiche:

    • CodePage: imposta il code page per salvare il file con il corretto nome.

      Esempio: MyUpLoad.CodePage = "big5". Lista dei possibili code page

    • TotalMaxFileSize: imposta la dimensione massima del totale dei file caricati sul server. La dimensione è espressa in byte.

      Esempio: MyUpLoad.TotalMaxFileSize = 10000

      Il valore di default è null, che significa che non vi è alcuna limitazione

    • MaxFileSize: imposta la dimensione massima di ciascun singolo file caricato sul server. La dimensione è espressa in byte.

      Esempio: MyUpLoad.MaxFileSize = 10000

      Il valore di default è null, che significa che non vi è alcuna limitazione

    • AllowedFilesList: è una stringa contenente la lista delle estensioni di file consentite, separate da virgola.

      Esempio: MyUpLoad.AllowedFilesList = "zip,rar,ace"

      Il valore di default è la stringa vuota, che significa che tutte le estensioni sono permesse. Se invece sono indicate delle estensioni, allora queste saranno le sole consentite. Per permettere il caricamento di file senza estensione, dovrete inserire due virgole consecutive, ad esempio ",,".

    • DeniedFilesList: è una stringa contenente la lista delle estensioni di file non consentite, separate da virgola.

      Esempio: MyUpLoad.DeniedFilesList = "exe,com,bat"

      Il valore di default è la stringa vuota, che significa che tutte le estensioni sono permesse. Se invece sono indicate delle estensioni, allora queste saranno negate, ed avranno precedenza su quelle consentite. Per negare il caricamento di file senza estensione, dovrete inserire due virgole consecutive, ad esempio ",,".

    • DenyPhysicalPath: è un boolean che indica se è possibile o meno indicare un percorso fisico del file in fase di caricamento.

      Esempio: MyUpLoad.DenyPhysicalPath = true

      Il valore di default è false.

    • ContentDisposition: è una stringa, che contiene l'intestazione HTTP del content disposition per il tipo MIME.

      Esempio: MyUpLoad.ContentDisposition = "inline;"

      I valori possono essere: "attachment;" "inline;" ""

    • DownloadBlockSize: questo valore, espresso in byte, indica la dimensione dei dati che vengono letti dalla sorgente in una volta.

      Esempio: MyUpLoad.DownloadBlockSize = 4096

      Questa proprietà è utile ai metodi FieldToFile, DownloadFile e DownloadField.

    • TotalBytes: questo valore, espresso in byte, indica la dimensione totale dei dati "postati".

      Esempio: Response.Write("Bytes=" & MyUpLoad.TotalBytes & "<br>")

    • BinaryData: questa caratteristica è un array di byte, contenente il flusso dei dati caricati in forma binaria.

      Sintassi: MyUpLoad.BinaryData(lngIndex) dove lngIndex è l'indice dell'array di byte.

    Metodi:

    • Upload: effettua il caricamento dei file dal cliente al server in una cartella di sistema. Non restituisce alcun valore
    • Save: salva tutti i file caricati sul disco. Effettua quindi la copia dei file caricati dalla cartella di sistema alla cartella di destinazione, che può essere passata come parametro. Qualora non sia indicata alcuna destinazione, i file verranno copiati nel percorso corrente. Restituisce un valore intero (Long) che indica il numero dei file salvati.

      sintassi: contatore = MyUpLoad.Save( [PercorsoDiDestinazione] )

    • DownloadFile: permette di scaricare il file indicato come sorgente. E' possibile anche indicare il content type ed il nuovo nome.

      sintassi: MyUpLoad.DownloadFile(fileSorgente[, ContentType, NuovoNomeFile])

      esempio: MyUpload.DownloadFile "D:\www\WM_qpWWsIhg\vostrodominio.it\myFile.txt", "application/x-zip-compressed", "NuovoNomeFile.txt"

    • DownloadField: permette di scaricare il file indicato come sorgente in un campo di un database. E' possibile anche indicare il content type ed il nuovo nome.

      sintassi: MyUpLoad.DownloadField(campoSorgente[, ContentType, NuovoNomeFile])

      esempio: MyUpload.DownLoadFied "myRecordSet("FILE")", "application/x-zip-compressed", "NuovoNomeFile.txt"

    • FieldToFile: permette di scrivere un file da un database ad una specifica directory. Questo metodo crea un nuovo file.

      sintassi: MyUpLoad.FieldToFile NomeCampo(FileDiDestinazione)

    • UploadInFile: questo metodo crea un nuovo file contenente l'intero contenuto dei dati "postati"

      sintassi: MyUpLoad.UploadInFile (FileDiDestinazione)

    Files Collection

    • Collezioni:
      • File: oggetto file
    • Caratteristiche:
      • Count: numero degli oggetti file
      • TotalBytes: dimensione in byte del totale della collezione di file
    • Metodi:
      • Item(ID): restituisce l'oggetto file con l'ID specificato

    Form Collection

    • Collezioni:
      • Item: oggetto Item
    • Caratteristiche:
      • Count: numero degli oggetti Item
    • Metodi:
      • Item(ID): restituisce l'oggetto Item con l'ID specificato

    Oggetto File

    • Caratteristiche:
      • Name: nome dell'Item come descritto nel relativo campo del form
      • FileName: nome del file inserito dall'utente
      • FileExt: estensione del file inserito dall'utente
      • FilePathName: percorso del file inserito dall'utente
      • ContentType: ContentType del file inserito dall'utente
      • ContentDisp: Content-Disposition del file nel form
      • Size: dimensione del file inserito dall'utente
      • ContentString: restituisce il contenuto del file in una stringa
      • TypeMIME: tipo MIME del file inserito dall'utente
      • SubTypeMIME: sotto tipo MIME del file inserito dall'utente
      • IsMissing: è un boolean, vero se l'utente non ha specificato il file
      • BinaryData: analogo alla relativa caratteristica dell'oggetto upload, relativo allo specifico file.
    • Metodi:
      • SaveAs: salva il file nel percorso specificato.

        Esempio: myUpload.files.item(3).saveas "/docs/" & myUpload.files.item(3).filename

      • FileToField: salva il file in uno specifico record di un database.

        Esempio: myUpload.files.item(2).FileToField myRecordSet.Field("FILE")

    Oggetto Item

    • Caratteristiche:
      • Count: numero di valori per questo Item
      • Name: nome di questo Item come riportato nel form
      • Values valori dell'Item