Salve io invece dovrei fare l'upload di file e memorizzare il nome del file su un database dove vi sono altri campi.
Il problema consiste nel fatto che nella form che riceve gli input, per poter effettuare l'upload devo riportare la stringa enctype="multipart/form-data" per indicare che sto trasferendo un file. Così facendo però non mi prende gli altri campi.
Ho provato in due modi 1 inserendo la stringa e 2 non inserendola. Riporto di seguito lo script e i relativi errori se qualcuno è così gentile da dargli un'occhiata e dirmi come posso risolvere.
OPZIONE 1: ERRORE “campi non compilati”
Script pagina aggiungi concorso:
<form enctype="multipart/form-data" method="POST" action="concorsi_DB.asp?tipo=aggiungi">
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width="19%"><font face="Georgia" size="2">Ente</font></td>
<td width="81%"><font face="Georgia" size="2"><input type="text" name="ente" size="70"></font></td>
</tr>
<tr>
<td width="19%"><font face="Georgia" size="2">Titolo concorso</font></td>
<td width="81%"><font face="Georgia" size="2"><input type="text" name="titolo" size="70"></font></td>
</tr>
<tr>
<td width="19%"><font face="Georgia" size="2">Allegato1</font></td>
<td>
<font face="Georgia" size="2"> <br>Allegato <input type="file" name="allegato"> </td>
</tr>
</table>
<table width=100%>
<tr>
<td width="100%" colspan="2"><font face="Georgia" size="2"><input type="submit" value="Inserisci" name="B1">
<input type="reset" value="Reimposta" name="B2"></font></td>
</tr>
</table>
</form>
Script pagina concorsi_DB.asp:
<% ' PERCORSO DEL DATABASE
url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("../../mdb-database/concorsi.mdb")
Set Conn = Server.CreateObject("ADODB.Connection")
conn.Open url_DB
' CONTROLLA SE TUTTI I CAMPI SONO STATI COMPILATI
IF Len(Request("ente")) = 0 or Len(Request("titolo")) = 0 then
' CAMPI NON COMPILATI!
%>
<hr>
<div align="center"><font face="Georgia" size="4"><b>Campi non compilati!</b></font></p>
<hr>
<%
Else
' CAMPI COMPILATI RICEVE L'OPERAZIONE DA SVOLGERE (AGGIUNGERE/MODIFICARE concorsi)
operazione = Request.QueryString("tipo")
Set RecSet = Server.CreateObject("ADODB.Recordset")
' IN BASE ALL'OPERAZIONE CREA LA QUERY AL DATABASE
IF operazione = "aggiungi" then
' DEVE AGGIUNGERE il concorso
SQL = "SELECT * FROM concorsi"
else
' DEVE MODIFICARE IL CONCORSO
SQL = "SELECT * FROM concorsi WHERE id = " & Request.Querystring("id") &""
End IF
RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic
' OPERAZIONE : AGGIUNGI concorsi
IF operazione = "aggiungi" then
RecSet.Addnew
' SE SI AGGIUNGE IL concorso, INSERISCE LA DATA CORRENTE
RecSet("data") = date()
End IF
RecSet("ente") = Server.HTMLEncode(Request.Form("ente"))
RecSet("titolo") = Server.HTMLEncode(Request.Form("titolo"))
RecSet("allegato") = Server.HTMLEncode(Request.Form("allegato"))
'inizio caricamento file
Set Upload = Server.CreateObject("Persits.Upload")
Upload.Save(Server.MapPath("../../public/Allegati")) 'percorso dove finirà il file
Set File = Upload.Files("allegato") ' input della form dove caricate il file
If Not File Is Nothing Then
filename=File.FileName
end if
'fine caricamento file
' AGGIORNA E CHIUDE IL DB
RecSet.Update
RecSet.Close
Set RecSet = Nothing
%>
<hr>
<div align="center"><font face="Georgia" size="4"><b>Operazione eseguita correttamente!</b></font></div>
<hr>
<%
End IF
Conn.Close
Set Conn = Nothing
%>
OPZIONE 2:
ERRORE
“Persist.Upload1 error “800°003d”
Wrong Content-Type. Make sure you have included the attribute ENCTYPE =”multipart/form-data” in your form.
/Pagine/Area_Riservata/concorsi_DB.asp, line 246”
Script pagina aggiungi concorso:
Script pagina aggiungi concorso:
<form method="POST" action="concorsi_DB.asp?tipo=aggiungi">
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width="19%"><font face="Georgia" size="2">Ente</font></td>
<td width="81%"><font face="Georgia" size="2"><input type="text" name="ente" size="70"></font></td>
</tr>
<tr>
<td width="19%"><font face="Georgia" size="2">Titolo concorso</font></td>
<td width="81%"><font face="Georgia" size="2"><input type="text" name="titolo" size="70"></font></td>
</tr>
<tr>
<td width="19%"><font face="Georgia" size="2">Allegato1</font></td>
<td>
<font face="Georgia" size="2"> <br>Allegato <input type="file" name="allegato"> </td>
</tr>
</table>
<table width=100%>
<tr>
<td width="100%" colspan="2"><font face="Georgia" size="2"><input type="submit" value="Inserisci" name="B1">
<input type="reset" value="Reimposta" name="B2"></font></td>
</tr>
</table>
</form>
Script pagina concorsi_DB.asp:
<% ' PERCORSO DEL DATABASE
url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("../../mdb-database/concorsi.mdb")
Set Conn = Server.CreateObject("ADODB.Connection")
conn.Open url_DB
' CONTROLLA SE TUTTI I CAMPI SONO STATI COMPILATI
IF Len(Request("ente")) = 0 or Len(Request("titolo")) = 0 then
' CAMPI NON COMPILATI!
%>
<hr>
<div align="center"><font face="Georgia" size="4"><b>Campi non compilati!</b></font></p>
<hr>
<%
Else
' CAMPI COMPILATI RICEVE L'OPERAZIONE DA SVOLGERE (AGGIUNGERE/MODIFICARE concorsi)
operazione = Request.QueryString("tipo")
Set RecSet = Server.CreateObject("ADODB.Recordset")
' IN BASE ALL'OPERAZIONE CREA LA QUERY AL DATABASE
IF operazione = "aggiungi" then
' DEVE AGGIUNGERE il concorso
SQL = "SELECT * FROM concorsi"
else
' DEVE MODIFICARE IL CONCORSO
SQL = "SELECT * FROM concorsi WHERE id = " & Request.Querystring("id") &""
End IF
RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic
' OPERAZIONE : AGGIUNGI concorsi
IF operazione = "aggiungi" then
RecSet.Addnew
' SE SI AGGIUNGE IL concorso, INSERISCE LA DATA CORRENTE
RecSet("data") = date()
End IF
RecSet("ente") = Server.HTMLEncode(Request.Form("ente"))
RecSet("titolo") = Server.HTMLEncode(Request.Form("titolo"))
RecSet("allegato") = Server.HTMLEncode(Request.Form("allegato"))
'inizio caricamento file
Set Upload = Server.CreateObject("Persits.Upload")
Upload.Save(Server.MapPath("../../public/Allegati")) 'percorso dove finirà il file
Set File = Upload.Files("allegato") ' input della form dove caricate il file
If Not File Is Nothing Then
filename=File.FileName
end if
'fine caricamento file
' AGGIORNA E CHIUDE IL DB
RecSet.Update
RecSet.Close
Set RecSet = Nothing
%>
<hr>
<div align="center"><font face="Georgia" size="4"><b>Operazione eseguita correttamente!</b></font></div>
<hr>
<%
End IF
Conn.Close
Set Conn = Nothing
%>
Praticamente la differenza tra i due script è la stringa "enctype="multipart/form-data""