Visualizzazione dei risultati da 1 a 6 su 6

Discussione: upload file

  1. #1

    upload file

    Salve, premetto di essere alle prime armi con la programmazione in asp,
    volevo provare l'upload di un file nel mio sito, ho provato con questo semplice script
    2 file uno x il form

    <form action="upload.asp" method="post" enctype="multipart/form-data">
    CAMPO TESTO
    <input type="text" name="testo1">
    FILE
    <input type="file" name="file1">
    <input type="submit" value="Upload">
    </form>

    l'altro x l'upload ma mi da sempre l'errore sulla riga
    57 dove è indicato il seguente commando:
    Set textStream = FSO.CreateTextFile(server.mappath(percorso & NomeFile1), True, False)

    errore
    Server.MapPath() error 'ASP 0173 : 80004005'

    Invalid Path Character

    /upload.asp, line 57

    An invalid character was specified in the Path parameter for the MapPath method.

    upload.asp
    <%

    percorso = "http://www.miosito.it/Files/"

    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,"testo1") > 0 then
    testo1 = ContenutoFile
    end if

    ' Nel caso in cui fossero presenti piu campi basta duplicare
    ' la condizione cambiando unicamente il nome del campo
    ' es.
    'if instr(Intestazione,"testo2") > 0 then
    ' testo2 = ContenutoFile
    'end if

    'if instr(Intestazione,"testo3") > 0 then
    ' testo3 = ContenutoFile
    'end if

    ' Qui recupero il file da uploadare (se presente) e lo scrivo
    ' sul server
    if instr(Intestazione,"file1") > 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
    if i<>0 then
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Upload1 = True
    DimensioneFile1 = len(ContenutoFile)
    EstensioneFile1 = right(ContenutoFile,3)
    NomeFile1 = NomeFile
    Set textStream = FSO.CreateTextFile(server.mappath(percorso & NomeFile1), True, False)
    textStream.Write ContenutoFile
    textStream.Close
    Set textStream = Nothing
    Set FSO = Nothing
    end if
    end if

    ' Lo stesso discorso vale anche per i campi dei file :
    ' Nel caso in cui fossero presenti piu file basta duplicare
    ' la condizione cambiando unicamente il nome del campo
    ' es.

    'if instr(Intestazione,"file2") > 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
    ' if i<>0 then
    ' Set FSO = CreateObject("Scripting.FileSystemObject")
    ' Upload2 = True
    ' DimensioneFile2 = len(ContenutoFile)
    ' EstensioneFile2 = right(ContenutoFile,3)
    ' NomeFile2 = NomeFile
    ' Set textStream = FSO.CreateTextFile(server.mappath(percorso & NomeFile2), True, False)
    ' textStream.Write ContenutoFile
    ' textStream.Close
    ' Set textStream = Nothing
    ' Set FSO = Nothing
    ' end if
    'end if

    'if instr(Intestazione,"file3") > 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
    ' if i<>0 then
    ' Set FSO = CreateObject("Scripting.FileSystemObject")
    ' Upload3 = True
    ' DimensioneFile3 = len(ContenutoFile)
    ' EstensioneFile3 = right(ContenutoFile,3)
    ' NomeFile3 = NomeFile
    ' Set textStream = FSO.CreateTextFile(server.mappath(percorso & NomeFile3), True, False)
    ' textStream.Write ContenutoFile
    ' textStream.Close
    ' Set textStream = Nothing
    ' Set FSO = Nothing
    ' end if
    'end if
    next

    ' Da qui in poi è possibile fare esegiure allo script altre operazioni
    ' inserire qui gli script aggiuntivi che si vogliono eseguire dopo l'upload
    ' Per esempio visualizzare quello che è stato inserito all'interno del
    ' compo testo

    Response.Write "Il valore immesso nella testo1 è " & testo1 & "
    "

    ' Utilizzando il sistema descritto sopra è possibile visualizzare campi
    ' testo aggiuntivi presenti nel form
    ' Response.Write "Il valore immesso nella testo2 è " & testo2 & "
    "
    ' Response.Write "Il valore immesso nella testo3 è " & testo3 & "
    "

    ' E la stessa cosa per i campi dove è stato eseguito l'upload dei file

    If Upload1 = true then
    Response.Write "
    La dimensione del file che hai uploadato è di " & DimensioneFile1*0.001 & "kb"
    Response.Write "
    Grazie di aver inviato il tuo file"
    End If

    'If Upload2 = true then
    ' Response.Write "
    La dimensione del file che hai uploadato è di " & DimensioneFile2*0.001 & "kb"
    ' Response.Write "
    Grazie di aver inviato il tuo file"
    'End If

    'If Upload3 = true then
    ' Response.Write "
    La dimensione del file che hai uploadato è di " & DimensioneFile3*0.001 & "kb"
    ' Response.Write "
    Grazie di aver inviato il tuo file"
    'End If

    End if
    %>

    grazie per l'aiuto

  2. #2

  3. #3
    devo trasferire dei file di testo .txt o .doc
    quello che mi suggerisci funziona solo con img

    ho provato con lo script che c'è nello stesso sito ma mi da errore in questa riga

    Set MyFile = ScriptObject.CreateTextFile(Left(Server.mappath(Re quest.ServerVariables("PATH_INFO")),pathEnd)

    perchè?

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Non è così.
    Con l'upload che ti ho suggerito puoi caricare qualsiasi cosa.

    Roby

  5. #5
    Originariamente inviato da vitalia_zucca
    devo trasferire dei file di testo .txt o .doc
    quello che mi suggerisci funziona solo con img

    ho provato con lo script che c'è nello stesso sito ma mi da errore in questa riga

    Set MyFile = ScriptObject.CreateTextFile(Left(Server.mappath(Re quest.ServerVariables("PATH_INFO")),pathEnd)

    perchè?

    usa quello suggerito che puoi usarlo per tutti ed è di una semplicità disarmante
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6

    Problemino intrigante

    Dunque ho provato ad utilizzare lo script asp per caricare i file consigliato, ed effettivamente funziona benissimo.

    Adesso io dovrei inserire l'upload dei file in un form già esistente, in cui non è previsto tale campo.
    Dunque il form di cui parlo prevede una pagina per l'invio che si chiama inc_submit.asp. In questa pagina attualmente sono presenti alcuni campi da riempire (data, titolo ecc).
    Ora ho provato ad inserire il campo che ho chiamato "allegati" come se fosse un campo qualsiasi. Ho inserendo nella pagina una riga in più dove ho scritto parte del contenuto del file Esempio_form.asp (vedi a seguire)

    <FORM METHOD="Post" enctype="multipart/form-data" ACTION="Upload_Semplice.asp">
    File : <INPUT TYPE="file" NAME="Campo1">

    File : <INPUT TYPE="file" NAME="Campo2">

    File : <INPUT TYPE="file" NAME="Campo3">

    File : <INPUT TYPE="file" NAME="Campo4">

    File : <INPUT TYPE="file" NAME="Campo5">

    <INPUT TYPE="submit" NAME="Enter">
    </FORM>

    quello che ho inserito in realtà non è esattamente questo codice, in quanto ho dovuto integrare il campo al form esistente. Ho dunque dichiarato prima il cmpo "allegati" come gli altri, e ho poi inserito, anziché il codice sopra, solamente il codice:

    File : <INPUT TYPE="file" NAME="allegati">

    Ora, il problema è che mi riempe il dtabase come previsto, col percorso del file indicato, ma il file non me lo carica nella cartella "files", come descritto nel file Upload_Semplice.asp



    <%
    Dim oUpload
    Set oUpload = new cUpload
    oUpload.SetPath "files\"
    oUpload.UploadAndSave
    Set oUpload=Nothing
    %>


    Quello che ho fatto io è prendermi questo codice e trasportarlo nella pagina che il form precedente prevede come risposta (copiando anche upload.asp).

    Insomma devo aver dimenticato di fare qualcosa perché l'upload non lo fa.

    L'unica cosa che mi viene in mente è che all'inizio del fileEsempio_form.asp c'è la prima riga:

    <FORM METHOD="Post" enctype="multipart/form-data" ACTION="Upload_Semplice.asp">

    Che io ho omesso in quanto il form reinderizza ad un'altra pagina (si chiama events.asp) però la parte: enctype="multipart/form-data" credo sia importante.

    Cosa posso fare?

    Tenete presente che quando premo il pulsante "inserisci" il codice del form è il seguente


    <input name="submit" type="submit" class="form" id="submit2" onClick="MM_validateForm('TITOLO','','R','FONTE',' ','R','DATA','','R','allegati','','R','DESCRIZIONE ','','R');return document.MM_returnValue" value="Inserisci documento nel database">
    <input type="hidden" name="MM_insert" value="submit">

    mentre nel file prima (nel file Esempio_form.asp) era:
    <INPUT TYPE="submit" NAME="Enter">

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.