[Risolto] upload immagini con la classe di Baol74 con size immagine

fabiusRiders

Nuovo Utente
23 Gen 2011
26
0
0
www.ridersitalia.it
ciao a tutti,
sto usando la classe di Baol74 per uppare le immagini nel server e al contempo inserirne il nome nel db access.
ho modificato il file originale per mettere la regola delle dimensioni del file, ma non funziona mi restituisce errore di
dichiarazione prevista END WITH a fine script, ma io il with lo dichiaro a inizio script.
dove sbaglio ???

ecco il sorgente:
<%
AD_ID = request("AD_ID")
if AD_ID < 1 then
response.write (errormsg)
response.end
end if

Dim oUpload
Set oUpload= new cUpload
With oUpload
'La riga seguente impoosta la connessione al database e la tabella di inserimento dati
'La connesione e la tabella verranno aperti con il metodo oUpload.Database.Open()
.SetDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath("../mdb-database/DUclassified.mdb"),"SELECT * from ADS where AD_ID = " & AD_ID & ";"
.EnabledAspUpload = False
.EnabledImageSize = True
.EnabledLog = False
.AutoRename = True
.Overwrite = False
.SetPath "../public/immagini_bacheca/"
.Load
'nuovo
.UploadOnly "Images"
While Not .Eof
If cLng(.Files("Size"))>(700*1024) then
Response.write ("L'immagine è troppo grande")
If .Files("Height")>=400 or .Files("Width")>=400 then
Response.write ("Le dimensioni dell'immagine " &_
.GetFileName() &" non sono corrette (" &_
.Files("Height") &"x" & .Files("Width") &"): File non caricato" )
else
'fine nuovo
.MoveFirst
if .EOF then
NumFiles = .Count()
Response.write "0 Files caricati su " & NumFiles &" : controlla le dimensioni e il tipo di file."
else
.Database.Open()
While Not .EOF
.Save
response.Write "il file <strong>" & .GetFileName &"</strong> è; stato salvato correttamente <br> <h1>l'annuncio sarà visibile dopo l'approvazione, grazie da tutto lo staff</h1><br>"

'Inserimento dei valori
.Database.Fields("AD_IMAGE") = .GetFileName

'Inserimento
.Database.update
.MoveNext
Wend
end if
end if
end if

End With
Set oUpload = Nothing
%>
 
Ciao Paolo,
Si tratta dell'upload di Baol74 che puoi trovare qui.
http://www.creamweb.it/script/mostra_script/?id_script=12

lo script funziona benissimo, io ho aggiunto questa parte
'nuovo
.UploadOnly "Images"
While Not .Eof
If cLng(.Files("Size"))>(700*1024) then
Response.write ("L'immagine è troppo grande")
If .Files("Height")>=400 or .Files("Width")>=400 then
Response.write ("Le dimensioni dell'immagine " &_
.GetFileName() &" non sono corrette (" &_
.Files("Height") &"x" & .Files("Width") &"): File non caricato" )
else
'fine nuovo

ma non funziona mi restituisce errore a fine script di previso END WITH anche se lo dichiaro a inizio script.
 
...script interessante, nel pomeriggio ci smanetto un po.

Prova così...

Codice:
[B][I]If cLng(.Files("Size"))>(700*1024) then Response.write ("L'immagine è troppo grande")[/I][/B]
If .Files("Height")>=400 or .Files("Width")>=400 then
Response.write ("Le dimensioni dell'immagine " &_
.GetFileName() &" non sono corrette (" &_
.Files("Height") &"x" & .Files("Width") &"): File non caricato" )
[B][I]End If[/I][/B]

Buon week-end
Paolo
 
...ci ho lavorato su, il seguente codice mi funziona, confrontalo con il tuo:

Codice:
<%

Dim oUpload
Set oUpload= new cUpload
With oUpload

'DB --------------------------------
	.SetDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath("mdb/db.mdb"),"SELECT Top 1 * FROM Tabella1"
'DB --------------------------------
	.EnabledAspUpload = False
	.EnabledImageSize = TRUE
	.EnabledLog = False
	.AutoRename = True
	.Overwrite = False
	.SetPath "files\"
	.Load
	.UploadOnly "Images"
While Not .Eof

'SIZE FILE -------------------------

	If cLng(.Files("Size"))>(700*1024) then Response.write ("L'immagine è troppo grande")
	If .Files("Height")>=400 or .Files("Width")>=400 then
		Response.write ("Le dimensioni dell'immagine " &_
		.GetFileName() &" non sono corrette (" &_
		.Files("Height") &"x" & .Files("Width") &"): File non caricato" )
	else
	
'DB --------------------------------	
			.Database.Open()
			While Not .EOF
					.Save
					response.Write "il file " & .GetFileName &" è stato salvato <br>"
					'Inserimento dei valori
					.Database.Fields("Titolo") = .Form("Titolo")
					.Database.Fields("Percorso") = .GetCompletePathFile
					'Inserimento
					.Database.AddNew()
			.MoveNext
			Wend
'DB --------------------------------	
 		.Save
	end if
	
.MoveNext
Wend
End With
Set oUpload = Nothing

%>
 
Ciao Paolo,
Il file size funziona perfettamente, grazie, ma non riesco a capire perchè non mi scrive il nome del file nel database, mi lascia il campo vuoto.
L'unica modifica che ho fatto al codice che mi hai mandato, oltre a mettere i miei campi del db è stata GetFileName anzichè GetCompletePathFile, ma ho riprovato anche con GetCompletePathFile ma niente non scrive nulla.
Ah l'altra modifica è .Database.update anzichè .Database.AddNew() perchè a me serve modificare il campo
a te funziona?
 
Ciao Paolo,
Il file size funziona perfettamente, grazie, ma non riesco a capire perchè non mi scrive il nome del file nel database, mi lascia il campo vuoto.
L'unica modifica che ho fatto al codice che mi hai mandato, oltre a mettere i miei campi del db è stata GetFileName anzichè GetCompletePathFile, ma ho riprovato anche con GetCompletePathFile ma niente non scrive nulla.
Ah l'altra modifica è .Database.update anzichè .Database.AddNew() perchè a me serve modificare il campo
a te funziona?

Ti ho modificato un po lo script, dagli un occhio, in pratica ora in base all'id chiamato in query, se il record non esiste lo inserisce, altrimenti aggiorna quello esistente:

Codice:
<%

Dim oUpload
Set oUpload= new cUpload
With oUpload

	.EnabledAspUpload = False
	.EnabledImageSize = TRUE
	.EnabledLog = False
	.AutoRename = True
	.Overwrite = False
	.SetPath "files\"
	.Load
	.UploadOnly "Images"
While Not .Eof

	If cLng(.Files("Size"))>(700*1024) then Response.write ("L'immagine è troppo grande")
	If .Files("Height")>=400 or .Files("Width")>=400 then
		Response.write ("Le dimensioni dell'immagine " &_
		.GetFileName() &" non sono corrette (" &_
		.Files("Height") &"x" & .Files("Width") &"): File non caricato" )
	else
	
			While Not .EOF
					  .Save
			response.Write "il file " & .GetFileName &" è stato salvato <br>"

' Inserimento dei valori
' DB --------------------------------------	
					
										strConnect = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("mdb/db.mdb")
									Set objConn = Server.CreateObject ("ADODB.Connection")
									Set objRec = Server.CreateObject ("ADODB.Recordset")
										objConn.Open strConnect
										SQL = "SELECT * from Tabella1 WHERE id = (16)"
									Set RSb = objConn.Execute (SQL)
					
					' SE L'ID NON ESISTE NEL DB LO INSERISCO			
										If RSb.EOF And RSb.BOF Then 
										
												objRec.Open "Tabella1", strConnect, 0, 2, 2
												objRec.AddNew
												objRec("titolo") = .Form("Titolo")
												objRec("percorso") = .GetFileName 'GetCompletePathFile
												objRec.Update
												objConn.Close
											Set Objrec = Nothing
											Set ObjConn = Nothing
											
									    Else
					' SE L'ID ESISTE NEL DB LO AGGIORNO
												SQL_CL  = "UPDATE Tabella1 SET titolo = '"&.Form("Titolo")&"', percorso = '"&.GetFileName&"' WHERE id = (16)"
												objConn.Execute (SQL_CL)
												objConn.Close
											Set Objrec = Nothing
											Set ObjConn = Nothing
									    End If
	
' DB --------------------------------------	
' FINE GESTIONE DB					

			.MoveNext
			Wend
	
 		.Save
	end if
	
.MoveNext
Wend
End With
Set oUpload = Nothing

%>
 
ecco il codice:

<form action="upload_db_inserzioni.asp?AD_ID=<%=AD_ID %>" method="post" enctype="multipart/form-data" name="form1">
<table width="500" align="center" cellspacing="5">
<tr valign="middle">
<td align="right" nowrap class="textBold">Utente</td>

<td class="textGray"> <%= Session("MM_Username") %> <input Type="hidden" name="AD_POSTER" type="text" class="form" value="<%= Session("MM_Username") %>" size="5" maxlength="5"/> </td>
</tr>

<tr valign="baseline">
<td></td>
<td nowrap align="left"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Carica la Foto del tuo annuncio </strong></font> </td>

</tr>

<tr valign="baseline">
<td nowrap align="right"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Foto Copertina</strong></font></td>
<td><input name="AD_IMAGE" type="file" id="Image" size="45"> <br><font color="red" size="1" face="Verdana, Arial, Helvetica, sans-serif"> </font></td>
<tr valign="middle">
<td align="right" valign="top" nowrap class="textBold">
&nbsp;</td>
<td> &nbsp;</td>
</tr>



<tr valign="baseline">
<td nowrap align="right"> </td>

<td><input type="hidden" name="AD_APPROVED" value="0">
<input name="submit" type="submit" value="Inserisci">
<input type="reset" name="Submit" value="Reimposta"> <br><font color="red" size="1" face="Verdana, Arial, Helvetica, sans-serif">Dopo che clicchi Inserisci, Attendere il caricamento del File, può volerci qualche minuto!!</font></td>
</tr>
</table>

</form>
 
Ho risolto modificando il codice in questa maniera:
Codice:
<%

	Session("MM_Username") = "Paolo" ' questa riga cancellala, è solo per provare
	Session("AD_ID") = 25 ' qui metti il valore dell'id reale

%>
<table width="500" align="center" cellspacing="5">
<form action="upload_db_inserzioni.asp" method="post" enctype="multipart/form-data">
<input Type="hidden" name="AD_POSTER" type="text" class="form" value="<%= Session("MM_Username") %>" size="5" maxlength="5"/>
	<tr>
        <td align="right" nowrap class="textBold">Utente</td>
        <td class="textGray"><%= Session("MM_Username") %></td>
    </tr>
    <tr valign="baseline">
    	<td></td>
    	<td nowrap align="left"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Carica la Foto del tuo annuncio </strong></font></td>
    </tr>
	<tr valign="baseline">
        <td nowrap align="right"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Foto Copertina</strong></font></td>
        <td><input name="AD_IMAGE" type="file" id="Image" size="45"> <br><font color="red" size="1" face="Verdana, Arial, Helvetica, sans-serif"> </font></td>
    </tr>
    <tr valign="middle">
        <td align="right" valign="top" nowrap class="textBold">
        &nbsp;</td>
        <td>&nbsp;</td>
    </tr>
	<tr valign="baseline">
		<td nowrap align="right"> </td>
		<td><input type="hidden" name="AD_APPROVED" value="0">
        <input name="submit" type="submit" value="Inserisci">
        <input type="reset" name="Submit" value="Reimposta"> <br><font color="red" size="1" face="Verdana, Arial, Helvetica, sans-serif">Dopo che clicchi Inserisci, Attendere il caricamento del File, può volerci qualche minuto!!</font></td>
	</tr>
</form>     
</table>
Come vedi in testa la variabile AD_ID la valorizzo come sessione e non con il Request.QueryString o Request.Form.

Il codice upload:
Codice:
<!--#include file="upload.asp"-->
<%

	AD_ID = Session("AD_ID")
	If AD_ID < 1 Then
		response.write (errormsg)
		response.end
	End If


Dim oUpload
Set oUpload= new cUpload
With oUpload

	.EnabledAspUpload = False
	.EnabledImageSize = TRUE
	.EnabledLog = False
	.AutoRename = True
	.Overwrite = False
	.SetPath "files\"
	.Load
	.UploadOnly "Images"
While Not .Eof

	If cLng(.Files("Size"))>(700*1024) then Response.write ("L'immagine è troppo grande")
	If .Files("Height")>=400 or .Files("Width")>=400 then
		Response.write ("Le dimensioni dell'immagine " &_
		.GetFileName() &" non sono corrette (" &_
		.Files("Height") &"x" & .Files("Width") &"): File non caricato" )
	else
	
			While Not .EOF
					  .Save
			response.Write "il file " & .GetFileName &" è stato salvato <br>"

' Inserimento dei valori
' DB --------------------------------------

										strConnect = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("mdb/db.mdb")
									Set objConn = Server.CreateObject ("ADODB.Connection")
									Set objRec = Server.CreateObject ("ADODB.Recordset")
										objConn.Open strConnect
										SQL = "SELECT * from ADS WHERE AD_ID = "&AD_ID
									Set RSb = objConn.Execute (SQL)
					
					' SE L'ID NON ESISTE NEL DB LO INSERISCO			
										If RSb.EOF And RSb.BOF Then 
										
												objRec.Open "ADS", strConnect, 0, 2, 2
												objRec.AddNew
											'	objRec("titolo") = .Form("Titolo")
												objRec("AD_IMAGE") = .GetFileName 'GetCompletePathFile
												objRec.Update
												objConn.Close
											Set Objrec = Nothing
											Set ObjConn = Nothing
											
									    Else
					' SE L'ID ESISTE NEL DB LO AGGIORNO
												SQL_CL  = "UPDATE ADS SET AD_IMAGE = '"&.GetFileName&"' WHERE AD_ID = "&AD_ID
												objConn.Execute (SQL_CL)
												objConn.Close
											Set Objrec = Nothing
											Set ObjConn = Nothing
									    End If


								' distruggo la sessione
									Session.Contents.Remove(Session("AD_ID")) 

	
' DB --------------------------------------	
' FINE GESTIONE DB					

			.MoveNext
			Wend
	
 		.Save
	end if
	
.MoveNext
Wend
End With
Set oUpload = Nothing

%>
ho cercato di ricalcare le tue variabili...
Paolo
 
Ultima modifica:
Ciao Paolo
Grazie per il tuo tempo..
Ho copiato il codice che mi hai inviato, l'upload funziona, ma non scrive il nome dell'imagine nel db, il che è molto strano :confused:

...non scrive il nome del file nel DB perchè la variabile non viene valorizzata, se noti in testa al codice ove vi è il form ho valorizzato la variabile ID in una session in modo da renderla disponibile anche durante l'inserimento nel DB. Ad inserimento effettuato la variabile viene distrutta.
Codice:
Session("AD_ID") = 25 ' qui metti il valore dell'id reale
 
Paolooo
Funzionaaa.. :quote::quote: risolto

se l'immagine è inferiore a 700 pixel la carica e scrive nel db il percorso, mentre
se supera i 700 pixel rilancia errore e non uppa nulla... e non modifica il db..

se ti serve ti invio il codice!!
 
Ecco!
<%
AD_ID = request("AD_ID")
if AD_ID < 1 then
response.write (errormsg)
response.end
end if

Dim oUpload
Set oUpload= new cUpload
With oUpload
'La riga seguente impoosta la connessione al database e la tabella di inserimento dati
'La connesione e la tabella verranno aperti con il metodo oUpload.Database.Open()
.SetDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath("../mdb-database/DUclassified.mdb"),"SELECT * from ADS where AD_ID = " & AD_ID & ";"
.EnabledAspUpload = False
.EnabledImageSize = True
.EnabledLog = False
.AutoRename = True
.Overwrite = False
.SetPath "../public\immagini_bacheca\"
.Load
.MoveFirst
While Not .Eof
if cLng(.Files("Size"))>(700*1024) then
NumFiles = .Count()
Response.write "0 Files caricati su " & NumFiles &" : controlla le dimensioni della foto. <h1>Deve essere inferiore a 700 pixel</h1> tra qualche secondo sarai rimandato alla pagina di gestione"
response.end
Set oUpload = Nothing
else
.Database.Open()
While Not .EOF
.Save
response.Write "il file <strong>" & .GetFileName &"</strong> è; stato salvato correttamente <br> <h1>l'annuncio sarà visibile dopo l'approvazione, grazie da tutto lo staff</h1><br> Tra qualche secondo sarai indirizzato alla tua pagina per gestire i tuoi annunci"


'Inserimento dei valori

.Database.Fields("AD_APPROVED") = .Form("AD_APPROVED")
.Database.Fields("AD_IMAGE") = .GetFileName

'Inserimento
.Database.update
' FINE GESTIONE DB

.MoveNext
Wend

.Save
end if

.MoveNext
Wend
End With
Set oUpload = Nothing

%>
 

Discussioni simili