Newsgroup: it.comp.www.asp
Titolo: Problemini

ho una pagina asp che raccoglie dei dati e li invia in tramite action e
metodo=post ad una pagina che li analizza e crea un record all'interno
di un db.
Nella pagina che raccoglie i dati la stringa del form è la
seguente:"<form name="form" enctype="multipart/form-data" method="post"
action="control.asp" onsubmit="return controllo()"> "
mentre la pagina che raccoglie i dati è la seguente.
<%
if InStr(Percorso,"")=0 then
oggetto=Request.QueryString("oggetto")
dat=Request.QueryString("dat") 
autore=Request.QueryString("autore") 
posta= Request.QueryString("posta")
messaggio=Request.QueryString("messaggio") 
percorso="no file allegato"
SET CN= SERVER.CREATEOBJECT("ADODB.CONNECTION")
PERC=SERVER.MAPPATH("guest.mdb")
CN.OPEN("PROVIDER=MICROSOFT.JET.OLEDB.4.0; DATA SOURCE="&PERC)
SET RSTINSERISCI= SERVER.CREATEOBJECT("ADODB.RECORDSET")
SET RSTINSERISCI=CN.EXECUTE ("INSERT INTO tab_guest (oggetto, dat,
autore, posta, messaggio, percorso) VALUES ('"& oggetto &"', '"& dat
&"', '"& autore &"', '"& posta &"', '"& messaggio &"', '"& percorso
&"')")
CN.CLOSE
SET CN=NOTHING
else
Server.Transfer "Upload_Database.asp"
end if
%>
Non riesco a capire per che il controllo che faccio con "inStr" non me
va ma, forse ho sbagliato a scrivere qualche parametro tra parentesi?
ma mi esegue lo script successivo e eliminando
enctype="multipart/form-data" dai parametri del form il trova mi da
errore dicendo che le variabili sono vuote dove sbaglio??
Grazie 
Gius  
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 errore dicendo che le variabili sono vuote dove sbaglio??
Forse mi sono perso un passaggio: dici che instr(percorso,"'") non
funziona...ma cos'è percorso???
Non va nel senso che esegue sempre il server.transfer? Oppure segnala errore
(se sì quale?)

 mentre la pagina che raccoglie i dati è la seguente.
Il multipart/form-data è adatto quando devi trasferire anche file.
Nel tuo esempio vedo questi due errori:
<form name="form" enctype="multipart/form-data" method="post"
action="control.asp" onsubmit="return controllo()"> "
Che dovrebbe essere così:
<form name="form" method="post"
 action="control.asp" onsubmit="return controllo()"> "
E il modo con cui prendi i dati:
oggetto=Request.QueryString("oggetto")
Che dovrebbe essere:
oggetto=Request.Form("oggetto")
o semplicemente:
oggetto=Request("oggetto")
Visto che tu invii i dati con modalità post e non con la modalità get
(request.querystring va usato con il metodo get).
Ciao
--
AZ [Microsoft .NET MVP]

 
[cut]
ok devo inviare un file che si uploadda sul server.
Percorso è un "input type="file""
Ma se uso il metodo  get nel post del form non mi passa il file 
da uplodare ma funziona il "QueryString". Mentre il request non 
funziona con il metodo post mentre il request.form non funziona 
con enctype="multipart/form-data".
Spero di essere stato chiaro 


 con enctype="multipart/form-data".
Anche questo è normale.
DEVI usare il metodo POST, poi la parte che fa l'upload leggerà il file 
in binario. 
Circa altre variabili, le puoi mandare contemporaneamente in 
querystring (basta metterle nell'url action della form), per esempio
<form action="upload.asp?tuavar=xxx" method="post" enctype...
<input type="file"....
....
</form>
Poi ovviamente la pagina "upload.asp" può andare a leggersi normalmente 
in binario il file, in querystring le tue variabili.
Ancora, se tali variabili DEVONO essere prese da campi della maledetta 
form, puoi fare una funzioncina in javascript che, prima del submit, si 
modifica l'action della form, appendendovi le var in querystring

 modifica l'action della form, appendendovi le var in querystring
non ho capito benissimo l'invio delle variabili.
siccome le variabili le recupero da degli input type="text" allora 
dovrei mettere il nome del campo=nome_variabile??
poi nel file definisco nome_varibile=quesryString("campo")
grazie 
gius


 poi nel file definisco nome_varibile=quesryString("campo")
No è più complessa, la cosa.
La cosa più semplice è
1) inviare il file dalla pagina A, e la form con il input file NON 
contiene altro.
2) la parte che fa l'UPLOAD, al termine, fa redirect ad una pagina B, 
se necessario passando il filename (del file uploadato) alla B
3) inviare gli altri campi dalla B. Ovviamente la form in questa B non 
ha l'enctype della A, non serve
Questo perchè, come ti abbiamo spiegato, per passare il file allo 
script di upload è necessario che la form abbia l'enctype multipart etc 
etc. Con questo enctype, i dati vengono letti in binario, e 
request.form NON funziona.
Ora, quando devo fare degli upload io uso una procedura come quella 
descritta. Anche perchè DOPO l'upload faccio dei controlli, se qualcosa 
non va lo segnalo, e non ha senso che uno mi inserisca altre cose.
SE INVECE vuoi che nella form della pagina A ci siano altri campi, per 
esempio testo, e li vuoi mandare CONTEMPORANEAMENTE al file da 
uploadare, allora ti dicevo che questi possono venire rimaneggiati da 
una funzione javascript client-side la quale
1) piglia il value di tali campi
2) lo sbatte nella action della form, quindi verranno mandati in 
querystring
Una cosa tipo
function mandainquerystring()
{
miaurl="paginaupload.asp?"
miaurl=miaurl+nomeform.nomecampo.value
miaurl=miaurl+"&"+nomeform.nomecampo2.value
nomeform.action=miaurl
}
Poi la paginaupload.asp andrà a leggerli in request.querystring.
Ovviamente questo lo farei SOLO se i campi non so tanti e, soprattutto, 
non è roba lunga.

 non è roba lunga.
ok, ma non sarebbe meglio utilizzare uno script asp che ti raccolga sia
l'immagine che i campi form text???
ne esistono molti più o meno complessi e free... senza dover installare
componenti sul server...
ad esempio....
http://www.byluciani.com/asp/default.asp?action=articoli&ID=9

bloodfrM...@tin.it
 scrive...

Ah se si può fare, sì.
Io non son mai stato a cercare o a capire, perchè non mi è mai 
interessato. Di solito PRIMA faccio fare l'upload, se va tutto bene gli 
faccio inserire le altre cose. Sennò è tempo perso. Per il mio punto di 
vista, si capisce.
Da vedere se Gino Pippo sarà in grado di usarlo, comunque.

 Da vedere se Gino Pippo sarà in grado di usarlo, comunque.
più tardi proverò lo script che mi avete suggerito sperando che vada
tutto
liscio altrimenti chiederò lumi a voi
Grazie
Gius



puoi leggere gli elementi del form e fare l'upload del file utilizzando
questo codice: 
Dim UploadRequest 
Set UploadRequest = CreateObject("Scripting.Dictionary") 
BuildUploadRequest RequestBin 
(attento alle maiuscole perchè è case-sensitive)
contentType =
UploadRequest.Item("nameVariabileFile").Item("ContentType") filepathname
= UploadRequest.Item("nameVariabileFile").Item("FileName") filename =
Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\")) 
'Legge il valore delle variabili dal form
value1 = UploadRequest.Item("var1").Item("Value") 
value2 = UploadRequest.Item("var2").Item("Value") 
'Upload del file
if filename <> "" then
	Set MyFile = ScriptObject.CreateTextFile("percorso" & filename) 
	For i = 1 to LenB(value) 
	MyFile.Write chr(AscB(MidB(value,i,1))) 
	Next 
	MyFile.Close
End If
Set ScriptObject = nothing
Upload.asp
<%
Server.ScriptTimeout = 3600
Response.Buffer = TRUE 
Sub BuildUploadRequest(RequestBin)
PosBeg = 1
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
boundaryPos = InstrB(1,RequestBin,boundary)
Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
Dim UploadControl
Set UploadControl = CreateObject("Scripting.Dictionary")
Pos =
InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition")) Pos
= InstrB(Pos,RequestBin,getByteString("name=")) PosBeg = Pos+6
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename="))
PosBound = InstrB(PosEnd,RequestBin,boundary)
If PosFile<>0 AND (PosFile<PosBound) Then
PosBeg = PosFile + 10
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
UploadControl.Add "FileName", FileName
Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
PosBeg = Pos+14
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
UploadControl.Add "ContentType",ContentType
PosBeg = PosEnd+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
Else
Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
PosBeg = Pos+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
End If
UploadControl.Add "Value" , Value
UploadRequest.Add name, UploadControl
BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
Loop
End Sub
Function getByteString(StringStr)
For i = 1 to Len(StringStr)
char = Mid(StringStr,i,1)
getByteString = getByteString & chrB(AscB(char))
Next
End Function
Function getString(StringBin)
getString =""
For intCount = 1 to LenB(StringBin)
getString = getString & chr(AscB(MidB(StringBin,intCount,1)))
Next
End Function%>
Ciao
Gotenks77

 Gius
Missione completata sono riuscito nell'intento sfruttando il link 
che, gentilemte, mi avevate inviato.
Vorrei solo sapere come facci a cambire 
l'impostazione della data in quanto la prendo tramite un input="text"
dove
ho inseito <%=now %> in quanto mi restituisce la data in formato
mm/gg/anno
00:00:00 AM 
vorrei che fosse nel formato italiano
grazie
