Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    32

    Upload file e campi di testo

    Ciao a tutti, sto cercando di fare, tramite l'uso di un unico form, l'upload di un file e l'inserimento in un db access di dati presi in campi di testo, per l'upload sto usando lo script di baol, ma come si può vedere dall'orario del post sto facendo mattina per far funzionare tutto.
    L'errore riscontrato dall'IIS è: "Impossibile richiamare il metodo BinaryRead dopo aver utilizzato l'insieme Request.Form." facendo varie ricerche mi sembra di aver compreso che non si può fare contemporaneamente l'upload di un file e usare il metodo Request.Form per prelevare i dati dai campi di testo e metterli in un db.

    Dato che la mia esigenza e quella di poter compilare dei campi di testo e fare l'upload di una foto utilizzando solo un form con un pulsante "submit" per inserire tutto in un db access, che metodo posso usare ?

    C'è modo di usare lo script di baol o un altro script per caricare file e contemporaneamente i campi di testo ?

    Grazie anticipatamente per le risposte.

  2. #2

    Re: Upload file e campi di testo

    Originariamente inviato da ulver
    Ciao a tutti, sto cercando di fare, tramite l'uso di un unico form, l'upload di un file e l'inserimento in un db access di dati presi in campi di testo, per l'upload sto usando lo script di baol, ma come si può vedere dall'orario del post sto facendo mattina per far funzionare tutto.
    L'errore riscontrato dall'IIS è: "Impossibile richiamare il metodo BinaryRead dopo aver utilizzato l'insieme Request.Form." facendo varie ricerche mi sembra di aver compreso che non si può fare contemporaneamente l'upload di un file e usare il metodo Request.Form per prelevare i dati dai campi di testo e metterli in un db.

    Dato che la mia esigenza e quella di poter compilare dei campi di testo e fare l'upload di una foto utilizzando solo un form con un pulsante "submit" per inserire tutto in un db access, che metodo posso usare ?

    C'è modo di usare lo script di baol o un altro script per caricare file e contemporaneamente i campi di testo ?

    Grazie anticipatamente per le risposte.
    Sì! Con l'upload di Baol lo puoi fare. Scaricatelo e vedrai che all'interno dello zip ci sono anche degli esempi.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    32
    Grazie per la risposta, ho risolto il problema.

    Per non rendere inutile questo post spiego a chi potrebbe incappare nel mio stesso problema qual'è la soluzione: utilizzando al posto del request.form("nome_form") il metodo oUpload.form("nome_form"), il quale non va in conflitto con l'upload del file, è possibile con la classe di baol poter fare l'upload dei file e prelevare i valori dei campi di teso contemporaneamente.

    Ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    32
    Riprendo questa discussione poiche ho riscontrato un altro problema con lo script di baol.

    Se faccio l'upload di un file chiamato pippo.jpg e tramite il metodo .GetFileName() prelevo il nome del file per inserirlo all'interno di un database non ci sono problemi.
    Se provo però a fare un nuovo uplod dello stesso file, impostando il valore di Autorename = true, lo script mi carica il file pippo.jpg sul server e poi lo rinomina come pippo_0.jpg poiche verifica che ci sono due file con lo stesso nome, e fin qui tutto bene il problema viene riscontrato quando provo ad usare di nuovo il metodo .GetFileName() il quale anzichè restituirmi come nome del file pippo_0.jpg mi restituisce il nome originale del file cioè pippo.jpg.


    Di seguito il codice che ho usato con l'aggiunta di qualche commento per renderlo più leggibile:

    Codice PHP:

    <%


    dim strFoto

    'Creo un' istanza dell'oggetto cUpload
    Dim oUpload
    Set oUpload= new cUpload

    With oUpload

    Imposto tutti i parametri per l'upload dell'immagine
    .EnabledAspUpload False
    .EnabledImageSize TRUE
    .EnabledLog False
    .AutoRename True
    .Overwrite True
    .SetPath "..\img\offerte"

    .Load


    dim strTesto
    strTesto 
    = .form("testo")

    .
    UploadOnly "Images"
    .Save

    ' Imposto il valore della variabile strFoto con il path che mi serve e in più aggiungo il nome del
    file che ho caricato sul server con il metodo .GetFileName()

    strFoto =  "img\offerte\"+.GetFileName()

    End With




    ' Mappaggio del database
    Set Conn=Server.CreateObject("
    ADODB.Connection")
    strConn="
    driver={Microsoft Access Driver (*.mdb)}; "
    strConn=strConn & " 
    DBQ=" & Server.MapPath("../db/offerte.mdb")

    Conn.Open strConn

    ' Stringa di interrogazione sulla tabella
    sql = "
    SELECT FROM offerte"

    Set rs = Server.CreateObject("
    ADODB.Recordset")
    rs.Open sql, conn ,3,3

    ' Preparazione e scrittura nuovo record
    rs.addnew
    rs("
    testo") = strTesto
    rs("
    foto") = strFoto
    rs.update

    ' Chiusura del database
    rs.Close
    set rs = Nothing
    conn.Close
    set conn = Nothing

    ' Chiusura dell'oggetto oUpload
    Set oUpload = Nothing

    %> 
    Come faccio a risolvere questo problema e a fare in modo che il metodo .GetFileName() mi restituisca il nome del file modificato dall'autorename caricato sul server ?

    Grazie in anticipo per la risposta

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    55
    scusa, ma tu quando crei un array hai un id di riferimento?
    puoi rinominare il file uploadato in questo modo: id-nomefile?
    così facendo non avresti il problema del doppio nome

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    32
    Ciao, ho pensato di fare così:
    Carico prima il contenuto del form testo nel database poi faccio l'update e mi ricavo l'id del nuovo record e con quell'id rinomino la foto che vado a caricare sul server con lo script di baol.
    Il ragionamento è giusto ma ora ho un altro stramaledetto problema, non riesco a recuperare l'id dell'ultimo elemento inserito nel database, ho provato con del codice trovato proprio su html.it
    è questo:

    Codice PHP:
    Set rsUtente Server.CreateObject("ADODB.Recordset"rsUtente.Open "MyUsers"objConnadOpenKeysetadLockPessimisticadCmdTable  rsUtente.AddNew rsUtente("Name") = strName rsUtente("Email") = strEmail  rsUtente.Update intpkUID rsUtente("ID"Set rsUtente nothing 
    preso da http://database.html.it/articoli/leg...cord-inserito/

    e lo adattato al mio codice (riporto solo la parte relativa al database):



    Codice PHP:

    dim codice

    ' Mappaggio del database
    Set Conn=Server.CreateObject("ADODB.Connection")
    strConn="driver={Microsoft Access Driver (*.mdb)}; "
    strConn=strConn & " DBQ=" & Server.MapPath("../db/offerte.mdb")

    Conn.Open strConn

    Stringa di interrogazione sulla tabella
    sql 
    "SELECT * FROM offerte"

    Set rs Server.CreateObject("ADODB.Recordset")
    rs.Open sqlconn ,3,3

    ' Preparazione e scrittura nuovo record
    rs.addnew
    rs("testo") = strTesto
    rs.update

    dopo l'update prelevo l'ultimo id
    codice 
    rs("id")
    rs("foto") = "img\offerte\" &codice + ".jpg"
    rs.update

    ' Chiusura del database
    rs.Close
    set rs = Nothing
    conn.Close
    set conn = Nothing
    Set oUpload = Nothing
    Response.Redirect ("
    control_panel_n.asp?id="&codice) 
    Quando faccio: codice = rs("id") la variabile codice non viene inizializzata a nulla poiche il comando rs("id") non mi restituisce l'ultimo id.

    Come devo fare ?

    A me sembra di aver seguito bene la guida che è presente su html.it .

  7. #7

    Re: Re: Upload file e campi di testo

    Originariamente inviato da michele.santoro
    Sì! Con l'upload di Baol lo puoi fare. Scaricatelo e vedrai che all'interno dello zip ci sono anche degli esempi.
    Ho lo stesso problema di ulver, nel mio zip non trovo questo esempio che dici...potresti linkarmi lo zip da scaricare?

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.