Newsgroup: it.comp.lang.javascript
Titolo: Form multipart

Ciao a tutti
Ho un form in cui l'utente deve poter compilare dei campi e, eventualmente 
caricare una immagine sul server.
Ora il problema e' che se metto un form di tipo multipart (per capirci 
quello che ti permette di caricare file sul server sfogliando il tuo hard 
disk) non mi accetta gli altri campi.
Che espediente o scorciatioia e' possibile utilizzare ?
un saluto 

Rataplan wrote:

li accetta, solo che vanno letti in un certo modo, lato server che hai ?
-- 
Davide Consonni

 li accetta, solo che vanno letti in un certo modo, lato server che hai ?
ASP 3.0

 ASP 3.0
Come si suol dire, mal comune mezzo gaudio.. Sono contento di non essere
l'unico costretto a sviluppare su tale arcaica piattaforma. :) Comunque,
per rispondere alla tua domanda, ASP 3.0 non gestisce l'upload dei file.
O ti affidi a dei componenti esterni, oppure devi "smazzare" a manino la
richiesta che ti arriva, tramite Request.BinaryRead(). Su google ci sono
diversi esempi in merito.
Se usi JScript invece che VBScript, ricordati che purtroppo il primo NON
gestisce dati binari, e quindi dovrai comunque appoggiarti a oggetti per
aggirare la cosa. Ad esempio, ADODB.Stream.
-- 
"Se c'č qualcosa di piů importante del mio ego su questa nave,
la voglio catturata e fucilata."

 aggirare la cosa. Ad esempio, ADODB.Stream.
Ciao  Zero
uso vbscript. Per l'upload in se ho risolto con  Request.BinaryRead().
Il problema e' che pero' non so se si riesce a fare arrivare al server anche 
altri valori presi da campi input senza dover ricorrere a session o cookie 
et similia.
che tu sappia e' quindi un limite del particolare campo di input o di asp 
sul server ?
ciao

 altri valori presi da campi input
Probabilmente non sono stato chiaro quando ho scritto "smazzare a manino
la richiesta". :) Intendo dire che ti devo gestire tu TUTTA la richiesta
che ti arriva, ivi compresi i valori dei campi input.
Quando tu usi "BinaryRead()" leggi l'intera richiesta in binario, quindi
oltre il file, anche i vari valori dei campi. E, a manino, devi andare a
recuperare le coppie chiave/valore.
Tra l'altro, se ben ricordo, una volta che usi BinaryRead() ASP dovrebbe
generarti errore se tenti di utilizzare Request.Form (almeno in JScript,
mi pare di ricordare).
-- 
"Se c'è qualcosa di più importante del mio ego su questa nave,


 recuperare le coppie chiave/valore.
anche se esula dal tema del ng, ma visto che ci siamo, sapresti indicarmi 
come
separare il flusso del file da quello degli altri campi ?
poniamo che insieme al file caricato io abbia il classico campo input
<input type="text" name="nome" id="nome" value="Mario" />
<input type="text" name="cognome" id="cognome" value="Rossi" />
come lo individui e lo recuperi lato server in vbscript ?
ciao

 diversi esempi in merito.
Oh che bello, quando si dice reinventare la ruota!
-- 
Dicono che la vita sia nata dal mare. Ascoltare quindi
il suono della risacca sulla riva del mare deve essere
come sentire la ninna nanna della nostra antica madre.

 Oh che bello, quando si dice reinventare la ruota!
Beh, ogni tanto male non fa. Secondo me, almeno una volta nella vita
andrebbero reinventate certe ruote - non tutte e non certo la stessa
più volte.
Quantomeno per essere programmatori un poco più consapevoli circa il
"come" funzionano certe cose che si danno per scontate.
Su certi meccanismi che stanno alla base, e che spesso - alcuni, fin
troppo spesso - ci limitiamo ad usare.
 
-- 
"Se c'è qualcosa di più importante del mio ego su questa nave,


 separare il flusso del file da quello degli altri campi ?
Beh, se hai usato BinaryRead() per leggere il file che ti arriva,
dovresti già sapere come manipolare la richiesta. In ogni caso, è
piuttosto semplice: prova a inviare un file testuale al server, e
a salvare il risultato di "BinaryRead()" su un file. E poi guarda
com'è formattata la richiesta: vedrai le coppie chiave/valore, ed
il contenuto del file di cui hai fatto l'upload.
Poi devi solo usare le funzioni MidB e simili per estrapolare ciò
che ti serve, usando un procedimento similare a quello utilizzato
per il file uploadato.
Sulla rete trovi diverse documentazioni in merito (ad esempio, se
cerchi tra le RFC).
Anni fa realizzai un "Request Parser" per ASP, ma in JScript: non
utilizzo VBS, quindi non posso andarti troppo nel dettaglio.


 troppo spesso - ci limitiamo ad usare.
concordo, ma solo una volta eh!
stavo giusto sbirciando nei dvd di backup e ho trovato qualche giorno fa un
videogame(!) fatto in javascript sei anni orsono.
Oggi sono pigro e uso jQuery perche' mi dico "dai quelle follie le hai
fatte una volta ora sai cosa c'e' sotto il cofano di fadeOut() e se lo
volessi lo sapresti fare, per il momento confida in John Resig!" ;)
poi, nella pratica, tipicamente si aspetta tutti che il supereroe di turno
si incarichi di ricreare la ruota per noi tutti


 si incarichi di ricreare la ruota per noi tutti
Che, se spettasse solo a lui, staremmo freschi. Il reinventare la
ruota, a volte, ha come effetto quella di migliorarla un poco. Ed
è grazie a questi miglioramenti se poi i supereroi di turno fanno
quel che fanno. :)
Personalmente, poi, jQuery non mi piace: cinque anni fa, usai per
la gestione di metodi legati ai CSS lo stesso concetto di "chain"
perché su IE non potevo accedere al prototype degli elementi DOM,
e mi faceva brutto avere metodi ai quali passare il riferimento.
Ma poi abbandonai tutto proprio perché il risultato finale non mi
piaceva, andavo a snaturare il linguaggio.
Sinceramente, preferisco gli standard. E penso che prima si debba
rendere standard i browser che non lo sono, ed eventualmente poi,
costruirci sopra dei framework per semplificarci il codice che si
va a scrivere tutti i giorni.
Ma indubbiamente se dovessi consigliare a un utente un framework,
tra quelli pubblici gli direi jQuery.
-- 
~ Tenete la morte lontano dalle strade. Guidate sul marciapiede.

 e mi faceva brutto avere metodi ai quali passare il riferimento.
anch'io preferisco l'approccio "pompare gli oggetti gia' esistenti e
livellarli ad un comun denominatore", aggiungendo metodi alle classi native
quando possibile, che mi pare adotti prototype.
Purtroppo conosco poco prototype, quindi uso jQuery pur non amando lo stile
"combo"
