PDA

Visualizza la versione completa : Upload File con aspSmartUpload.dll e rinonima dei file


ondes_giaco
18-02-2014, 18:20
Salve
devo caricare immagini su un server con aspSmartUpload; in pratica ho una rubrica multi utenza e ogni utente può caricare un'immagine di un contatto. Questo è il form che utilizzo per la scelta del file:

<FORM METHOD="Post" enctype="multipart/form-data" ACTION="upload.asp">
<INPUT TYPE="file" NAME="file">
<INPUT TYPE="submit" NAME="Enter" value="Upload">
</FORM>

questa è la pagina upload.asp

<%
On Error Resume Next
Dim objUpl
Set objUpl = Server.CreateObject("aspSmartUpload.SmartUpload")
objUpl.AllowedFilesList = "jpg,gif,jpeg"
objUpl.MaxFileSize = 1000000
objUpl.Upload
objUpl.Save("/Stagista/Sito/upload")
Set objUpl = Nothing
If Err.Number = 0 Then
Set Conn=Server.CreateObject("ADODB.Connection")
strConn="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Stagista\Sito\Database\Rubrica.accdb;Per sist Security Info=False; "
Conn.Open strConn
dim idRubrica
dim nomefile
idRubrica = session("idcontatto")
sql = "SELECT IDRUBRICA,PERCORSOIMM FROM Immagini WHERE IDRUBRICA = " & idRubrica & " "
set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql,Conn,1
if rs.eof then
sql = "SELECT * FROM Immagini "
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql,Conn,3,3
' Preparazione e scrittura nuovo record
rs.addnew
rs("IDRUBRICA") = idRubrica
nomefile = request.form("file")
rs("PERCORSOIMM") = nomefile
rs.update
end if
Response.Write "Upload eseguito con successo!"
Else
Response.Write "Errore in fase di upload, riprova!"
End If
%>


Il problema è che qualsiasi file io voglia caricare, mi compare sempre la schermata di errore "Errore in fase di upload,riprova!"

Inoltre vorrei che il nome del file da caricare corrispondesse con l'id del contatto che corrisponde a un campo della tabella del database. è possibile rinominare il file prima di caricarlo sul server?

cavicchiandrea
18-02-2014, 19:47
Ciao e benvenuto.
Immagino di si ma non lo conosco e non l'ho mai usato (essendo un componente aggiuntivo non tutti gli hosting lo usano o ne permettono l'istallazione) comunque qui (http://aspsmartupload.net) dovresti trovare indicazioni in merito.
:ciauz:

ondes_giaco
19-02-2014, 10:47
Grazie per il benvenuto e per la risposta cavicchiandrea.
aspsmartupload.net lo avevo gia consultato comunque ho effettuato delle modifiche al codice e il problema è l'upload, cioè mi segnala sempre la scritta di errore "Errore in fase di upload,riprova!" anche se metto file di estensione specificate nell'AllowedFilesList. Ecco il codice:
<%
On Error Resume Next
Dim objUpl
Set objUpl = Server.CreateObject("aspSmartUpload.SmartUpload")
objUpl.AllowedFilesList = "jpg,gif,jpeg,png"
objUpl.MaxFileSize = 1000000
dim idRubrica
dim file
dim nomefile
idRubrica = session("idcontatto")
objUpl.Upload
objUpl.Save("/Stagista/Sito/upload")
Set objUpl = Nothing
If Err.Number = 0 Then
for each file in ubjUpl.Files
if not file.isMissing then
file.SaveAs("/Stagista/Sito/upload/"& file.FileName)
nomefile = file.FileName & file.FileExt
end if
Set Conn=Server.CreateObject("ADODB.Connection")
strConn="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Stagista\Sito\Database\Rubrica.accdb;Per sist Security Info=False; "
Conn.Open strConn
sql = "SELECT IDRUBRICA,PERCORSOIMM FROM Immagini WHERE IDRUBRICA = " & idRubrica & " "
set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql,Conn,1
if rs.eof then
sql = "SELECT * FROM Immagini "
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql,Conn,3,3
' Preparazione e scrittura nuovo record
rs.addnew
rs("IDRUBRICA") = idRubrica
rs("PERCORSOIMM") = nomefile
rs.update
else
sql = "SELECT IDRUBRICA,PERCORSOIMM FROM Immagini WHERE IDRUBRICA = " & idRubrica & " "
set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql,Conn,3,3
rs("PERCORSOIMM") = nomefile
rs.Update
end if
next
Response.Write "Upload eseguito con successo!"
Else
Response.Write "Errore in fase di upload, riprova!"
End If
%>

ondes_giaco
19-02-2014, 13:04
La dll non l'ho registrata in quanto mi dava questo errore "Chiamata a dllRegisterServer non è riuscita codice di errore 0x80004005" cosi ho spostato la libreria sul server in cui la utilizzo. Non avendo i permessi devo per forza registrarla?

cavicchiandrea
19-02-2014, 13:13
La dll non l'ho registrata in quanto mi dava questo errore "Chiamata a dllRegisterServer non è riuscita codice di errore 0x80004005" cosi ho spostato la libreria sul server in cui la utilizzo. Non avendo i permessi devo per forza registrarla?
Non saprei non avedolo mai usato, ma hai delle necessità particolari per dover usare questo upload, il persistUpload per esempio (credo sia free) è più diffuso e trovi sicuramente più notizie in rete

Vincent.Zeno
19-02-2014, 13:18
il persits Upload... (credo sia free)
non è free, ma diversi provider lo acquistano e lo mettono a disposizione.
se ne ha notizia nelle specifiche dell'offerta di hosting

ondes_giaco
19-02-2014, 13:51
Non saprei non avedolo mai usato, ma hai delle necessità particolari per dover usare questo upload, il persistUpload per esempio (credo sia free) è più diffuso e trovi sicuramente più notizie in rete

Si devo usare per forza questo upload, comunque non riesco a capire se l'upload non va per errori nel codice o per altro

cavicchiandrea
19-02-2014, 14:45
Per capire dov'è l'errore re-installa il codice originale (solo upload, togliendo le query al database), ricontrollando passo passo il processo d'installazione :ciauz:

ondes_giaco
19-02-2014, 15:35
Per capire dov'è l'errore re-installa il codice originale (solo upload, togliendo le query al database), ricontrollando passo passo il processo d'installazione :ciauz:
Grazie per il consiglio. Ho provato il codice originale e si verifica sempre l'errore in fase di upload. Credo proprio quindi che il problema sia nella dll

ondes_giaco
19-02-2014, 18:11
In effetti quando ho scaricato la libreria c'erano due file: aspSmartUpload.dll e aspSmartUploadUtil.dll e io avevo preso in considerazione solo la prima. Ho caricato sul server pure la seconda e ho cercato di registrarla ma mi da questo allert di errore "Il modulo D:\Stagista\Sito\bin\aspSmartUploadUtil.dll è stato caricato, ma il punto di ingresso DllRegisterServer non è stato trovato. Accettarsi che D:\Stagista\Sito\bin\aspSmartUploadUtil.dll sia un file OCX o DLL valido, quindi riprovare" In pratica non può essere registrata? Devo mettere i due file nella cartella system32 di Windows?

Loading