Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764

    Form con upload file: problema inserimento nome file nel DB

    Ho questo form:
    codice:
    <html>
    <head>
    <title>Untitled Document</title>
    </head>
    <body>
    <form method="post" action="inserimento.asp">
      <table width="100%" border="1" align="center">
        <tr>
          <td width="25%">Nome:</td>
          <td><input name="nome" size="50" maxlength="50"></td>
        </tr>
        <tr>
          <td width="25%">Descrizione:</td>
          <td><textarea name="descrizione" rows="4" cols="44"></textarea></td>
        </tr>
        <tr>
          <td>Immagine:</td>
          <td>Carica file </td>
        </tr>
        <tr>
          <td>Stato</td>
          <td>
    	  <select name="stato">
    	  <option value="0">NON ATTIVO
    	  <option value="1">ATTIVO
    	  </select>	  </td>
        </tr>
        <tr>
          <td colspan="2" align="center"><input name="submit" type="submit" value="Aggiungi">
    <input name="Aggiungi" value="1" type="hidden"></td>
        </tr>
      </table>
    </form>
    </body>
    </html>
    Tramite il form vengono raccolti dei dati da inserire in un DB.

    Il link evidenziato in rosso mi apre una pagina, carica.asp, che mi serve per fare l'upload di un file.

    Questo è il codice di carica.asp
    codice:
    <html>
    <head>
    <title>Carica file</title>
    </head>
    
    <body onLoad="window.focus();">
    <form method="POST" enctype="multipart/form-data" action="upload.asp">
    
    	File:
    
    	<input type="file" name="file" size="20">
    
    
    	<input type="submit" name="Enter" value="Upload" onClick="value='Attendere: caricamento del file in corso';">
    
    </form>
    </body>
    </html>
    L'action del form di carica.asp porta a upload.asp:
    codice:
    <%@ Language= VBScript %>
    <html>
    <head>
    <title>Titolo pagina</title>
    <%
    ' Imposta il tempo max di esecuzione dello script (espresso in millisecondi)
    Server.ScriptTimeout = 100000
    
    Response.Expires=0
    Response.Buffer = TRUE
    Response.Clear
    
    'impostazioni variabili
    byteCount = Request.TotalBytes
    RequestBin = Request.BinaryRead(byteCount)
    Set UploadRequest = CreateObject("Scripting.Dictionary")
    BuildUploadRequest RequestBin
    
    'individua il tipo di file che si cerca di fare l upload
    contentType = UploadRequest.Item("file").Item("ContentType")
    
    'intero percorso del file
    filepathname = UploadRequest.Item("file").Item("FileName")
    
    '****************************** CONTROLLI IMMAGINE
    
    'controllo tipo immagine
    tipo = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"."))
    
    'cambiare la scrita zip e gz qui sotto per inserire la sigla di un altro tipo di file
    'Se si vuole permettere l'upload di qualsiasi tipo di file cancellare o commentare
    'le successive 4 linee di codice e l'ultimo END IF della pagina upload.asp
    'If tipo <> "zip" AND tipo <> "gz" then
    'Response.Write ("Errore Upload. Non è possibile fare upload di un file ." & tipo)
    'Response.End
    'else
    
    ' calcolo del peso della immagine
    'imposta qui, il peso max. 9000 vuol dire 9 Kb circa
    IF byteCount > 200000 THEN 
    Response.Write ("Errore Upload. File troppo grande!")
    Response.End
    else
    
    '*********************************** NOME FINALE DEL FILE e UPLOAD
    nomefile = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
    
    'in questa variabile viene salvato il nome del file che sarà del tipo 2311235.gif
    filename = nomefile
    
    value = UploadRequest.Item("file").Item("Value")
    Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
    pathEnd = Len(Server.mappath(Request.ServerVariables("PATH_INFO")))-14
    
    'da questa riga di codice si specifica l'indirizzo relativo dove sarà inserito il file
    Set MyFile = ScriptObject.CreateTextFile("D:\inetpub\webs\sitoit\public\images\" & filename)
    For i = 1 to LenB(value)
    MyFile.Write chr(AscB(MidB(value,i,1)))
    Next
    
    MyFile.Close
    
    'End If
    End If
    %> 
    </head>
    <body>
     
    Il file <%= filename %> è stato caricato con successo.
    
    Il file caricato pesa
    <%
    Kb = byteCount/1024
    Response.Write(FormatNumber(KB, 2) & "Kb")
    %>.
    </body>
    </html>
    Il file esegui.asp serve per caricare il file sul server.

    Il caricamento del file funziona correttamente.

    Il problema è che vorrei fare l'upload del file e poi scrivere nel database il nome del file caricato. Tramite il form vorrei inserire: nome e descrizione e relativo file.

    Non riesco a scrivere nel database il nome del file (filename) nello stesso record dove poi, tramite il form inserirò (o avrò già inserito) nome e descrizione.

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Non si vede la query....

    Roby

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    Non l'avevo messa perché si tratta di una query di inserimento che non presenta particolari difficoltà su nessun campo, tranne il file, che non so proprio come inserirlo.

    Non ho idea di come passare al database l'informazione in merito all'inserimento del file: tramite la pagina carica.asp (che adesso si apre con target="_blank", ma che vorrei far aprire in finestra popup, tramite un javascritp), carico il file sul server (e questo funziona), poi chiudo la finestra... e come passo l'info al db?
    Ho visto un sistema simile per caricare i file nello Snitz Forum, quando nei post inserisci i file...

    Questo è il file inserimento.asp. Nella query non so proprio come mettere l'informazione sul file caricato sul server.
    Dovrei passare dal file upload.asp "filename", ma non so come...

    codice:
    <%
    
    function CorreggiVirgolette (stringa)
    	CorreggiVirgolette = Replace (stringa, "'", "''")
    End function
    
    Aggiungi = TRIM (Request("Aggiungi"))
    
    nome = TRIM (Request("nome"))
    descrizione = TRIM (Request("descrizione"))
    stato = Request.form("stato")
    
    	
    %>
    <html>
    <head>
    <title>Inserimento prodotti</title>
    </head>
    
    <body>
    <%
    sqlString = "INSERT INTO prodotti " &_
    "(nome, descrizione, stato) VALUES (" &_
    " '" & nome &"', " &_
    " '" & descrizione & "', "&_
    " " & stato& ")"
    
    Conn.Execute sqlString 
    
    %>
    <table width="600" cellpadding="4" cellspacing="0" align="center">
      <tr>
         <td><%=nome%> è stato aggiunto nel database.</td>
       </tr>	
    </table>
    <%
    Conn.Close
    Response.buffer=True
    %>
    </body>
    </html>

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Quando chiudi la popup devi passare alla finestra madre, in querystring, il nome del file.

    Roby

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    Ed è proprio questo che mi sta creando dei problemi: come faccio a passare i valori in querystring alla finestra madre?

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    UP!!!

  7. #7
    Utente di HTML.it L'avatar di engi62
    Registrato dal
    Oct 2006
    Messaggi
    71

    non so se può esserti utile ...

    avevo un problema simile per spedire email con allegati (che poi sono file come le tue immagini!)

    ho risolto così:

    pagina 1: form con nome+descrizione+pulsante INVIO (che ho chiamato CARICA ALLEGATO)che va a pagina2

    pagina 2: form per caricare il file che aveva anche campi con i dati di nome e descrizione (riempiti con il request.form) + INVIO che va a pagina 3

    pagina3: upload del file e poi inserimento nel db dei 3 dati


    a me funziona ... ... non so se ti può servire, cioè se puoi usare questa strategia con il tuo codice

    engi

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    Grazie per la risposta, engi.

    Da quello che ha scritto Roby_72, pare che esista un modo semplice e pulito per passare alla finestra madre, alla chiusura del popup, il nome del file, in modo poi da poterlo caricare nel DB.

    Resta il fatto che non so come farlo...

  9. #9
    Utente di HTML.it L'avatar di engi62
    Registrato dal
    Oct 2006
    Messaggi
    71

    ok ... proviamoci ...

    ...

    orbene ... guarda la tua pagina 'upload.asp' .... quando ha finito il caricamento, tu fai apparire il messaggio "Tutto ok ...etc etc"

    prova, invece del messaggio (che sposterai nella pagina madre ... poi vediamo come), a metterci un bel response.redirect fatto così:

    codice:
    response.redirect("nomepaginadoveèilforminiziale.asp?caricamento=ultimato&nomefile="& nomefile &"peso="& FormatNumber(KB, 2))
    questa istruzione torna alla prima pagina e si porta come querystring il nome del file che hai caricato (mi semvbra di ricordare che tu lo abbia messo nella variabile 'nomefile' ...) e il peso del file

    Nella pagina di partenza, devi aggiungere le istruzioni che, dopo aver verificato che si sta tornando dall'upload, inseriscono i dati nel db (con la query che hai scritto) e fanno apparire il messaggio che volevi.

    qualcosa del tipo:

    codice:
    if request.querystring("caricamento")="ultimato" then
    
    il form con il campo immagine riempito così
    
    <input type="text" value="<%=request.querystring("nomefile")%>">
    
    else
    
    (metti tutto il codice che gia' c'era nella pagina)
    
    end if
    Ora potrai far funzionare il form che andra' alla pagina dove la query carichera' nel db

    e alla fine del caricamento nell db mettici il messaggio che avevi previsto

    Spero sia chiaro quello che ho scritto ... ma se non ti funziona continuiamo pure a tentare no problem!

    engi

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    Innanzitutto, grazie per la risposta

    Diciamo che ciò che mi hai suggerito funziona, ma vanno sistemate alcune cose...

    La mia pagina carica.asp si apre (anzi si dovrà aprire) sotto forma di popup, quindi se faccio un redirect, resto su questa nuova sessione del browser, mentre sotto mi resta l'altra sessione aperta... Ecco perché stavo cercando di passare il nome del file alla chiusura della finestra.

    Il tuo suggerimento potrebbe essere una soluzione alternativa, nel caso in cui non riesca a passare il nome del file alla chiusura. Dovrei fare una banale modifica secondo la quale si passa a carica.asp, senza _blank o popup e poi con il redirect torno alla pagina iniziale. Dovrei però portarmi su carica.asp gli eventuali dati già inseriti nel form prima di caricare l'immagine, altrimenti, se vengono inseriti dati, poi si passa su carica.asp, quando si torna con il redirect, i dati vengono persi.

    Qualche idea per passare i dati alla chiusura della finestra?

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.