+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: [ASP.NET] Inserire oggetto in un record

  1. #1
    L'avatar di Unknow
    Unknow non è in linea Scolaretto
    Post
    88

    [ASP.NET] Inserire oggetto in un record

    In una pagina ASP.NET ho un pulsante, la cui pressione deve inserire (internamente) un file esistente in un campo di database. Questo file può essere in formato PDF, DOC, XLS o altri.
    Ho anche un'altro pulsante, la cui funzione è quella di effettuare il download dell'oggetto dal suddetto campo al disco.
    Conosco VB per le operazioni non ASP. Vorrei sapere:

    1) Il campo di che tipo deve essere per potere contenere l'oggetto se il db è Access e SQLServer.
    2) Con quale istruzione posso copiare il file .PDF che è posizionato sul desktop per inserirlo nel database.
    3) Come posso effettuarne il successivo download (non ho necessità di visualizzare il contenuto, mi basta salvarlo sul disco).

    Grazie a chi mi aiuterà!

  2. #2
    L'avatar di TheTruster
    TheTruster non è in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Luogo
    Messina - Italy
    Post
    7,174
    Blogs
    3
    Spostata in ASP.Net

    TheTruster
    Il Crossposting è vietato dalla Netiquette!




  3. #3
    L'avatar di Unknow
    Unknow non è in linea Scolaretto
    Post
    88

    Altra soluzione

    Siccome nessuno ha risposto, ho pensato che non fosse una strada percorribile, quindi ho trovato una nuova soluzione.
    Invece di utilizzare un campo oggetto in cui riporre i files, ho creato in Server.MapPath una cartella chiamata "Allegati", e un campo testo con il nome del file relativo.

    A questo punto ho il seguente problema:
    Come posso fare per fare apparire una dialogbox nella quale selezionare un file per copiarlo in questa cartella?
    E poi, come posso, sempre con una finestra di dialogo, copiare il file contenuto nella cartella Allegati in una cartella del mio disco?

    Grazie in anticipo.

  4. #4
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    Quote Originariamente inviato da Unknow Visualizza il messaggio
    Siccome nessuno ha risposto, ho pensato che non fosse una strada percorribile, quindi ho trovato una nuova soluzione.
    Invece di utilizzare un campo oggetto in cui riporre i files, ho creato in Server.MapPath una cartella chiamata "Allegati", e un campo testo con il nome del file relativo.
    ...dalla mia esperienza posso dirti che conviene quasi sempre avere solo il path del file memorizzato sul db...
    Quote Originariamente inviato da Unknow Visualizza il messaggio
    A questo punto ho il seguente problema:
    Come posso fare per fare apparire una dialogbox nella quale selezionare un file per copiarlo in questa cartella?
    Dipende con quale Framework stai lavorando.
    Se stai sviluppando in Asp.Net 2.0 allora trovi tra i controlli lato server FileUpload che ti permette di selezionare un file posto sul computer locale.
    Quote Originariamente inviato da Unknow Visualizza il messaggio
    E poi, come posso, sempre con una finestra di dialogo, copiare il file contenuto nella cartella Allegati in una cartella del mio disco?
    Qui dipende...nel senso che l'utente con cui gira il processo Asp.Net deve avere i permessi di lettura/scrittura sulla cartella allegati. In generale o concedi sulla cartella in questione i permessi all'utente Asp.Net oppure puoi abilitare nel web.config l'impersonation.
    In questo secondo caso l'utente deve comunque avere i diritti sulla cartella.
    Tutto questo vale se puoi effettuare tali operazioni sul cartelle del server, se invece stiamo parlando di uno spazio web in cui non puoi fare nulla di tutto ciò allora puoi sempre prendere in considerazione l'idea di usare la classe FTpWebRequest(disponibile dal Framework 2.0 in poi). Quindi inviare i file nella cartella allegati tramite il protocollo FTP.
    Sul mio blog trovi un semplicissimo esempio:
    Sign In: Upload file via FTP

  5. #5
    L'avatar di Unknow
    Unknow non è in linea Scolaretto
    Post
    88
    Grazie per la dritta!
    Per quanto riguarda l'upload ci sono riuscito.

    Per il download ho ancora dei problemi, in quanto non sono riuscito a capire che codice usare nel button "Download".
    Io vorrei ottenere lo stesso effetto di quando viene scaricato un programma da una pagina html. Aprire la finestra Salva e, premendo OK salvare in quella posizione il file selezionato.

    Come posso fare?

    * Dimenticavo: La parte che riguarda la gestione degli accessi non è mia competenza, io devo solo occuparmi della copia fisica del file.

  6. #6
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    Quote Originariamente inviato da Unknow Visualizza il messaggio
    * Dimenticavo: La parte che riguarda la gestione degli accessi non è mia competenza, io devo solo occuparmi della copia fisica del file.
    ...bhè sbagli a pensare che non ti riguarda...come fai a scrivere del codice senza conoscere come verrà configurato il server
    Quote Originariamente inviato da Unknow Visualizza il messaggio
    Per il download ho ancora dei problemi, in quanto non sono riuscito a capire che codice usare nel button "Download".
    Io vorrei ottenere lo stesso effetto di quando viene scaricato un programma da una pagina html. Aprire la finestra Salva e, premendo OK salvare in quella posizione il file selezionato.
    ..anche in questo caso trovi un semplice esempio sul mio blog:
    Sign In: Download File

  7. #7
    L'avatar di Unknow
    Unknow non è in linea Scolaretto
    Post
    88
    Non mi funziona!
    Ho scritto:
    codice:
    Using file As New System.IO.FileStream(Server.MapPath("Allegati/File.pdf"), System.IO.FileMode.Open)
    Response.ContentType = "application/octet-stream"
    Response.AddHeader("content-disposition", "attachment; filename=NameFile")
    Dim contentFile As Byte() = New Byte(Convert.ToInt32(file.Length) - 1) {}
    file.Read(contentFile, 0, Convert.ToInt32(file.Length))
    Response.BinaryWrite(contentFile)
    End Using
    Mi verificano due problemi:
    1) Il file salvato sulla scrivania è più grande (in dimensioni) di quello originale, quindi non si apre avvertendo che è danneggiato (mi viene da pensare che sia la riga colorata).
    2) Non riconosce nome e estensione del file originale, quindi devono essere inserite manualmente.

  8. #8
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    ...la lista dei MIME Type:
    MIME Type Detection in Internet Explorer
    Con file pdf dovresti usare:
    "application/pdf"

  9. #9
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    Completo l'intervento indicando una strada un pò più recente del mio codice(scritto con il Framework 1.1).
    Se stai usando il Framework 2.0 allora puoi usare il metodo TrasmitFile:
    codice:
    Response.ContentType = "MIME Type";
    Response.AppendHeader("Content-Disposition","attachment; filename=" + nomefile);
    Response.TransmitFile( Server.MapPath("path file") );
    Response.End();

  10. #10
    L'avatar di Unknow
    Unknow non è in linea Scolaretto
    Post
    88
    Non funziona.
    Dice che il file è già in uso da un altro processo...
    Cosa ho sbagliato?
    codice:
           Using file As New System.IO.FileStream(Server.MapPath("Allegati/File.pdf"), System.IO.FileMode.Open)
                Response.ContentType = "MIME Type"
                Response.AppendHeader("Content-Disposition", "attachment; filename=" & "Allegati/File.pdf")
                Response.TransmitFile(Server.MapPath("Allegati/File.pdf"))
                Response.End()
            End Using
    Ho cambiato il tuo + FILENAME, e l'ho sostituito con il mio path.


    OK. Ce l'ho fatta, ho cancellato la prima riga e fuziona tutto.
    Grazie ancora.

+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi