Salve a tutti, ho un problema con uno script che fa l'upload di file sul server su un database. Non sono un esperto e mi sto rompendo la testa, sembra un problema di sintassi da quanto restituisce il browser
Lo script funziona perfettamente se insieme al file (sarà un'immagine) invio anche le info inserite in un campo di testo. Il problema nasce se tento di inseirire anche le info da altre textBox.
Lo script ha 3 files:
1 il form
2 il codice asp che fa l'upload
3 il database (quest'ultimo è molto semplice e funziona perfettamente se non aggiungo altri campi nel from e nel codice di invio dei dati)
Il codice del form è il seguente:
codice HTML:
<HTML>
<BODY BGCOLOR="#FFFFFF">
<h3>Aspupload: Salvare il file in Database Access via ODBC</h3>
<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="odbc_upload.asp">
<p>Nome<br>
<input name="txtNome" type="text" id="txtNome">
</p>
<p>Cognome<br>
<input name="txtCognome" type="text" id="txtCognome">
</p>
<p>File:<BR><INPUT TYPE=FILE NAME="THEFILE">
</p>
<P><BR>
<INPUT TYPE=SUBMIT VALUE="Upload!">
</FORM>
</BODY>
</HTML>
Non credo ci sia nulla di errato, il problema suppongo sia nel codice asp che invia i dati:
codice:
<%
Set Upload = Server.CreateObject("Persits.Upload")
' Capture files
percorso = Server.MapPath("/concorso2014/immagini")
Upload.Save percorso
' Obtain file object
Set File = Upload.Files("THEFILE")
If Not File Is Nothing Then
' Build ODBC connection string
Connect = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("aspupload.mdb")
' If you use SQL Server, the connecton string must look something like this:
' Connect = "Driver=SQL Server;Server=MYSRV;Database=master;UID=sa;PWD=xxx"
' Build SQL INSERT statement
SQL = "INSERT INTO MYIMAGES(image_blob, filename, nome, cognome, filesize ) VALUES(?, '"
SQL = SQL & File.Filename & "', '"
SQL = SQL & Replace(Upload.Form("txtNome"), "'", "''") & "', "
SQL = SQL & Replace(Upload.Form("txtCognome"), "'", "''") & "', "
SQL = SQL & File.Size & ")"
' Save to database
File.ToDatabase Connect, SQL
Response.Write "Grazie, il tuo file è stato inserito nel database."
Else
Response.Write "Attenzione! File non selezionato."
End If
%>
La riga incriminata è la seguente:
codice:
SQL = SQL & Replace(Upload.Form("txtCognome"), "'", "''") & "', "
Se non la inserisco funziona perfettamente. Il mio dubbio è: non posso inserire altri campi di testo con questo tipo di script? Ne supporta solo uno oltre ai campi per l'upload?
Se inserisco il secondo campo di testo (nel'esempio "cognome") ottengo il seguente errore dal browser:
codice:
Persits.Upload.1 error '800a001c'
[Microsoft][ODBC Microsoft Access Driver] Syntax error in string in query expression 'TestoCognome', 197171)'.
/concorso2014/odbc_upload.asp, line 29
Mi è venuto il mal di testa, grazie a chi vorrà darmi una mano
Rob