• User Attivo

    [ASP] upload di più immagini con asp e access

    Buongiorno a tutti, prima di postare la mia richiesta comunico di aver guardato nel furum ma di non aver trovato ciò che fa al caso mio.

    Devo realizzare l'area riservata per un cliente (agenzia immobiliare) che gli permetterà di modificare le pagine del proprio sito.
    Più precisamente, per ciascuna abitazione, dovrà poter caricare sia testo che immagini.

    Per il testo non ci sono problemi, e non ce ne sarebbero nemmeno per le immagini se dovesse caricarne solo una.
    Deve poterne caricare almeno 6 e sinceramente non saprei come fare.

    Attraverso un mudulo, dovrebbe poter caricare le varie immagini:

    • vengono inserite in una cartella
    • sul db access, nei campi di tabella relativi alle img, deve comparire l'indirizzo della cartella dove sono contenute;
    • aprendo la pagina asp definitiva il sistema dovrebbe recuperare le immagini, sistemarle in determinati spazi (con determinate dimensioni) e se l'utente vuole vederne un ingrandimento dovrebbe semplicemente cliccarci sopra e si dovrebbe aprire una popup

    Non sono praticissimo di asp e quindi vi chiedo un po' di pazienza.

    Grazie per l'aiuto.
    Se servono altre info fatemi sapere.


  • User

    controlla se il tuo hosting supporta aspSmartUpload .
    E' un componente gratuito e largamente supportato dai server WIN.

    E' possibile fare upload di singoli file, multipli o blob nel db molto semplicemente.

    sono inoltre presenti una miriade di esempi sulla rete riguardo questo componente.


  • User Attivo

    sono hostato su aruba....sai dirmi se supporta la componente che mi hai indicato?

    grazie


  • User

    fai una pagina asp ed incolla questo codice

    
    <%
       Dim mySmartUpload
       Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
    %>
    
    

    Se lanciando la pagina non ti restituisce errore significa che è supportato.
    Se dovresti ricevere un errore prova con il persits Upload

    
    <%
    Set Upload = Server.CreateObject("Persits.Upload.1")
    %>
    
    

    se anche questo componente non è supportato potresti adoperare un upload in asp classico seguendo questo tutorial (sono tre paginette da leggere con un esempio pratico)
    http://www.stardeveloper.com/articles/display.html?article=2001042501&page=1


  • User Attivo

    Grazie 1000.
    Appena ho un attimo di tempo ci dò un'occhiata e ti faccio sapere.


  • Moderatore

    puoi utilizzare la classe di baol che consiglio vivamente in quanto non necessita di componenti esterni e ti permete di fare proprio quello che vuoi te

    :ciauz:


  • User Attivo

    per hwlab
    ho provato a controllare se aruba supporta le componenti che mi hai indicato ma nisba: in entrambi i casi mi da errore "Server.CreateObject Failed"

    Ho seguito poi le indicazioni su start developer e:

    • nel primo esempio "File uploading to server hard disk" la cosa funziona ma non fa al caso mio in quanto sul db non ho trovato traccia del file uploadato e nella pagina in cui visualizzo l'immagine mette un link e per il mio caso non va bene.
    • nel secondo esempio "File uploading to Microsoft Access database." ho provato ad uploadare i files creati ma sinceramente tra file .bat, .config e .dll non ci capisco nulla ed infatti mi da errore.

    Ora proverò a guardare la classe di baol suggerita da Legolas anche se a dire il vero mi scontro sempre con gli stessi problemi: gli script che scarico funzionano sempre alla perfezione ma poi mi perdo nell'adattarli alle mie esigenze.


  • User Attivo

    Ciao Lego, grazie per il suggerimento. Ho scaricato lo script ed in parte è proprio ciò di cui avevo bisogno.
    Ovviamente ho non pochi problemi nell'adattare il codice alle mie esigenze.

    Riesco a fare l'upload delle immagini nella cartella public sul server.
    I problemi sorgono con il db access.
    Ho creato una tab con i seguenti campi:
    id
    campo
    percorso
    campo1
    percorso1
    campo2
    percorso2

    Quando eseguo l'upload il campo "percorso" si popola con il seguente percorso:
    d:\inetpub\webs\nomesito\public\immagine.jpg
    e il campo "campo" rimane vuoto.

    Prevedendo poi il form per l'upload la possibilità di caricare 5 img ho provato a inserirle tutte e sinceramente pensavo che sul db si aggiungesse un solo record contenente, per ciascun campo "percorso" il percorso della posizione di ciscuna img caricata e invece mi aggiunge 5 records e nei campi "percorso", "percorso1", "percorso2", "p...3", "p...4" mi inserisce sempre lo stesso percorso per ciascuna img caricata.

    Non capisco, e oltretutto non saprei come fare per recuperre e dunque visualizzare l'img attraverso una nuova pagina asp utilizzando il percorso salvato nel campo del db:
    <%strURL=rs("Percorso")%>
    ....
    <img src="<%=strURL%>">
    NON FUNZIONA!

    Ti ringrazio in anticipo per il prezioso aiuto che vorrai gentilmente offrirmi.


  • Moderatore

    e ci mancherebbe pure che funzioni :D:D
    te stai dando all'immagine il percorso dell'hard disk... c:/ecc...
    mentre il tag img vuole il percorso web http://ecc.....

    Per il resto ti posso assicurareche la classe è fatta molto bene e non necessita di adattamenti, però bisogna un po' studiarla e capire il funzionamento.

    Nello zip ci sono degli esempi per realizzare anche upload multipli, ti consiglio di dargli un'occhiata.

    Il campo percorso ti rimane sempre lo stesso perchè non cicli, prova a ciclare con un while mentre stai facendo l'upload 😉

    Ciao
    :ciauz:


  • User Attivo

    Ok Lego, il file a cui mi riferisco per l'upload multiplo è prorpio quello di cui parli --> esempio_form.htm.

    Il codice è questo:
    <FORM METHOD="Post" enctype="multipart/form-data" ACTION="Upload_Database.asp">
    File : <INPUT TYPE="file" NAME="Campo1"><BR>
    File : <INPUT TYPE="file" NAME="Campo2"><BR>
    File : <INPUT TYPE="file" NAME="Campo3"><BR>
    File : <INPUT TYPE="file" NAME="Campo4"><BR>
    File : <INPUT TYPE="file" NAME="Campo5"><BR>
    <INPUT TYPE="submit" NAME="Enter">
    </FORM>

    che richiama il file Upload_Database.asp:
    <!--#include file="upload.asp"-->
    <%
    Dim oUpload
    Set oUpload= new cUpload
    With oUpload
    .SetDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath("mdb-database/news.mdb"),"SELECT Top 1 * FROM news"
    .EnabledAspUpload = False
    .EnabledImageSize = False
    .EnabledLog = False
    .AutoRename = True
    .Overwrite = False
    .SetPath "\public"
    .Load
    .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 " & .GetFileName &" è stato salvato <br>"
    .Database.Fields("Percorso") = .GetCompletePathFile
    .Database.Fields("Percorso2") = .GetCompletePathFile
    .Database.Fields("Percorso3") = .GetCompletePathFile
    .Database.Fields("Percorso4") = .GetCompletePathFile
    .Database.Fields("Percorso5") = .GetCompletePathFile
    'Inserimento
    .Database.AddNew()
    .MoveNext
    Wend
    end if
    End With
    Set oUpload = Nothing
    %>

    Non capisco:

    • come e dove settare il path web per salvarlo nel campo del db
    • non saprei come fare il ciclo "while" di cui mi parli.

    Potresti aiutarmi a risolvere questi problemi?
    Come avrai intiuto non me la cavo molto bene con la programmazione.

    Grazie per la pazienza.