Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Upload immagini in database esistente usando Baol

    Salve a tutti, so che probabilmente le richieste di aiuto per quanto riguarda l'utilizzo di Baol vi escono dalle orecchie, ma per quanto io abbia navigato all'interno del forum e dei manuali, la mia inesperienza nel campo dell'ASP mi porta ad avere difficoltà nell'integrazione degli esempi con il sito web che sto andando a costruire.

    Anticipo che la mia necessità è quella di permettere all'utente che ne abbia i permessi di inserire un tot di immagini per l'articolo che va a scrivere, di cui la prima da utilizzare all'interno di un apposita finestra che viene visualizzata nella home page insieme all'articolo.

    Cosa ho fatto io: ho integrato l'input tipo file nel form (che già avevo) per l'inserimento degli articoli. A questo punto mi rimane da capire come integrare l'upload di Baol nel mio file che mi carica l'articolo. Il file upload non va toccato in nessuna sua parte se non nella indicazione della cartella in cui mettere i file? Per fare l'upload di più immagini, l'unica possibilità che ho è quella di mettere più campi <input type="file"> e mettere una immagine singola in ognuno di essi?

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Si. Ho postato un esempio proprio stamattina.

    Roby

  3. #3
    Ok, mi sono studiato gli esempi e ho cercato di impostare il tutto per quel che serve a me. Ottengo però un errore proprio nel file in cui meno me lo sarei aspettato, ossia Upload.asp. ecco cosa mi dice il browser:


    Request object error 'ASP 0206 : 80004005'

    Cannot call BinaryRead

    /upload.asp, line 574

    Cannot call BinaryRead after using Request.Form collection.


    Cosa devo fare?

  4. #4
    Probabilmente è perché ho messo questo controllo:

    codice:
    dim title, intro, testo, genre, nick
    title = Request.Form("titolo")
    genre = Request.Form("genere")
    intro = Request.Form("intro")
    testo = Request.Form("testo")
    If (Request.Cookies("sam_cookie")<>"") Then
    	nick = Request.Cookies("sam_cookie")("username")
    Else
    	nick = Session("username")
    End If
    
    if (title="" OR intro="" OR testo="") then
    	if (title="") then
    		Session("title_err")=("Il titolo è obbligatorio.")
    	end if
    	if (intro="") then
    		Session("intro_err")=("L'introduzione è obbligatoria.")
    	end if
    	if (testo="") then
    		Session("testo_err")=("Il testo dell'articolo è obbligatorio.")
    	end if
    	Response.Redirect("index.asp?cntMod=newArt")
    
    else
    
    	Dim oUpload
    	Set oUpload = new cUpload
    
            'e così via tutto il codice di upload
    Come posso fare allora per effettuare lo stesso controllo senza adoperare Request.Form?

  5. #5
    Se poi tolgo il controllo che ho appena riportato, ecco spuntare un nuovo errore, sempre nel file Upload. asp di Baol:



    Microsoft VBScript runtime error '800a01a8'

    Object required: 'Files'

    /upload.asp, line 365



    Io non so più dove sbattere la testa... Aiuti?

  6. #6
    Se fai una ricerca sul forum, come anch'io ho suggerito stamattina, vedrai che ti salterà agli occhi che non puoi usare Request.Form con l'upload.

  7. #7
    Pur avendo letto alcune discussioni in merito al topic in questione, rimango ancora col cruccio dell'errore alla linea 365. La discussione più attinente che sono riuscito a trovare è Errore di upload, la quale mi ha messo qualche pulce nell'orecchio.

    Ora, io ho fatto un form per il caricamento di massimo 6 immagini. Niente di particolare, ma per cominciare dovrebbe andare bene. Ecco il form:

    codice:
    <form name="form1" method="post" action="prova_update_articolo.asp">
    <tr>
    				<td height="30" align="center">Immagine 1:</td>
    				<td><div align="center"><INPUT TYPE="file" size="70" NAME="image1"></div></td>
    			</tr>
    			<tr>
    				<td height="30" align="center">Immagine 2:</td>
    				<td><div align="center"><INPUT TYPE="file" size="70" NAME="image2"></div></td></td>
    			</tr>
    			<tr>
    				<td height="30" align="center">Immagine 3:</td>
    				<td><div align="center"><INPUT TYPE="file" size="70" NAME="image3"></div></td></td>
    			</tr>
    			<tr>
    				<td height="30" align="center">Immagine 4:</td>
    				<td><div align="center"><INPUT TYPE="file" size="70" NAME="image4"></div></td></td>
    			</tr>
    			<tr>
    				<td height="30" align="center">Immagine 5:</td>
    				<td><div align="center"><INPUT TYPE="file" size="70" NAME="image5"></div></td></td>
    			</tr>
    			<tr>
    				<td height="30" align="center">Immagine 6:</td>
    				<td><div align="center"><INPUT TYPE="file" size="70" NAME="image6"></div></td></td>
    			</tr>
    </form>
    Ed ecco invece la parte di codice che dovrebbe uploadare i file:

    codice:
    Dim oUpload
    	Set oUpload = new cUpload
    	oUpload.AutoRename = True
    	oUpload.Overwrite = False
    	oUpload.SetPath "public/images" 'Impostazione del percorso
    	oUpload.Load
    	While Not oUpload.EOF
    		oUpload.Save()
    		Select Case lCase(oUpload.Files("InputName"))
    			Case "image1"
    				FileName_image1 = oUpload.GetFileName()
    			Case "image2"
    				FileName_image2 = oUpload.GetFileName()
    			Case "image3"
    				FileName_image3 = oUpload.GetFileName()
    			Case "image4"
    				FileName_image4 = oUpload.GetFileName()
    			Case "image5"
    				FileName_image5 = oUpload.GetFileName()
    			Case "image6"
    				FileName_image6 = oUpload.GetFileName()
    		End Select
    		oUpload.MoveNext
    	Wend
    La mia idea è che invece di un Select Case sarebbe il caso di usare un ciclo Do While nel quale ad ogni ciclo compaia un codice simile a questo:

    codice:
    FileName_image & i = oUpload.GetFileName()
    If nomefile <> "" then
    	oUpload.Save
    	oUpload.MoveNext
    End if
    Ma ho paura che possa essere un'idea tanto sbagliata quanto malsana. Aspetto vostri consigli.

  8. #8
    un Up! per me.

  9. #9
    Alla fine credo di essere riuscito nei miei intenti. Per coloro che dovessero ritrovarsi nei miei stessi meandri, posto il codice che ho stilato:

    codice:
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
    
    <%
    	Dim nick
    	If (Request.Cookies("sam_cookie")<>"") Then
    		nick = Request.Cookies("sam_cookie")("username")
    	Else
    		nick = Session("username")
    	End If
    
    	Response.Buffer = True
    	server.ScriptTimeout=3600
    	
    	Set oUpload = new cUpload 
    	oUpload.AutoRename=False
    	oUpload.OverWrite=False
    	oUpload.Upload
    	oUpload.SetPath "/public/images" 'Impostazione del percorso
    	oUpload.UploadOnly "Images"
    	
    	Dim news_titolo, news_genere, news_intro, news_testo
    	news_titolo = trim(oUpload.Form("titolo"))
    	news_genere = trim(oUpload.Form("genere"))
    	news_intro = trim(oUpload.Form("intro"))
    	news_testo = trim(oUpload.Form("testo"))
    	
    	if (news_titolo="" OR news_intro="" OR news_testo="") then
    		Session("title_err")=("")
    		Session("intro_err")=("")
    		Session("testo_err")=("")
    		Session("image_err")=("")
    		if news_titolo &"[]" = "[]" then
    			Session("title_err") = ("Il titolo è obbligatorio")
    		end if
    		if news_intro &"[]" = "[]" then
    			Session("intro_err")=("L'introduzione è obbligatoria.")
    		end if
    		if news_testo &"[]" = "[]" then
    			Session("testo_err")=("Il testo dell'articolo è obbligatorio.")
    		end if
    		Response.Redirect("index_volley.asp?cntMod=newArt")
    	else
    FileName_image1 = "": FileName_image2 = "": FileName_image3 = "": FileName_image4 = "": FileName_image5 = "": FileName_image6 = ""
    		'Campo di tipo file; lascio il ciclo in caso in cui si voglia dare in futuro la possibilità di aggiungere più di un file
    		If Not oUpload.EOF then
    			oUpload.MoveFirst 
    			Do While Not oUpload.EOF
    				Select Case oUpload.Files("InputName")
    				Case "image1"
    					oUpload.Filter = oUpload.FilterSize(1048576)
    					If (oUpload.GetFileName()="" OR isnull(oUpload.GetFileName())) then
    						Session("image_err")=("L'immagine è troppo grande")
    						Response.Redirect("index_volley.asp?cntMod=newArt")
    					Else	
    						FileName_image1 = oUpload.GetFileName():oUpload.SaveAs(FileName_image1)
    					End if
    				Case "image2"
    					FileName_image2 = oUpload.GetFileName():oUpload.SaveAs(FileName_image2)
    				Case "image3"
    					FileName_image3 = oUpload.GetFileName():oUpload.SaveAs(FileName_image3)
    				Case "image4"
    					FileName_image4 = oUpload.GetFileName():oUpload.SaveAs(FileName_image4)
    				Case "image5"
    					FileName_image5 = oUpload.GetFileName():oUpload.SaveAs(FileName_image5)
    				Case "image6"
    					FileName_image6 = oUpload.GetFileName():oUpload.SaveAs(FileName_image6)
    				Case Else
    				End Select
    				oUpload.MoveNext
    			Loop
    		end if
    	end if
    	
    '	While Not oUpload.EOF
    '		Select Case lCase(oUpload.Files("InputName"))
    '			Case "image1"
    '				FileName_image1 = oUpload.GetFileName()
    '				If FileName_image1 <> "" then
    '					oUpload.Save
    '				End if
    '			Case "image2"
    '				FileName_image2 = oUpload.GetFileName()
    '				If FileName_image2 <> "" then
    '					oUpload.Save
    '				End if
    '			Case "image3"
    '				FileName_image3 = oUpload.GetFileName()
    '				If FileName_image3 <> "" then
    '					oUpload.Save
    '				End if
    '			Case "image4"
    '				FileName_image4 = oUpload.GetFileName()
    '				If FileName_image4 <> "" then
    '					oUpload.Save
    '				End if
    '			Case "image5"
    '				FileName_image5 = oUpload.GetFileName()
    '				If FileName_image5 <> "" then
    '					oUpload.Save
    '				End if
    '			Case "image6"
    '				FileName_image6 = oUpload.GetFileName()
    '				If FileName_image6 <> "" then
    '					oUpload.Save
    '				End if
    '		End Select
    '		oUpload.MoveNext
    '	Wend			
    	Set Conn = Server.CreateObject("ADODB.Connection")
    	Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/public/volley.mdb")
    	Set Rs=server.CreateObject("ADODB.Recordset")
    	Rs.Open "articoli",Conn,3,3
    	Rs.AddNew
    
    	Rs("id_argomento") = oUpload.Form("genere")
    	Rs("titolo") = oUpload.Form("titolo")
    	Rs("introduzione") = oUpload.Form("intro")
    	Rs("articolo") = oUpload.Form("testo")
    	Rs("data") = date()
    	Rs("ora") = time()
    	Rs("id_autore") = nick
    	Rs("id_attivo") = "1"
    	Rs("image1") = FileName_image1
    	Rs("image2") = FileName_image2
    	Rs("image3") = FileName_image3
    	Rs("image4") = FileName_image4
    	Rs("image5") = FileName_image5
    	Rs("image6") = FileName_image6
    	
    	Rs.update
    	Rs.Close
    	Conn.Close
    	Set Rs = Nothing
    	Set Conn=Nothing				
    	Set oUpload = Nothing
    	
    	Response.Redirect("index_volley.asp?cntMod=news")
    %>

    Resta solo un dubbio: se sullo stesso host provo a copiare lo stesso codice su un'altra pagina che punta su un altro database, allora il nuovo codice non carica i file sul server, mentre il vecchio continua a funzionare. Cosa vuol dire?

  10. #10
    Non capisco proprio: nella pagina dove carico il nuovo codice con il nuovo database, se decido di riportare il tutto al vecchio database, in realtà poi il browser mostra tutto così com'era prima. Ossia io gli dico di farmi vedere gli articoli che sono nel database a, ma lui continua a farmi vedere gli articoli del database b... Possibile che esista una qualche forma di memoria da parte del server che non mi permette di vedere se veramente le pagine stanno funzionando o meno?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.