Visualizzazione dei risultati da 1 a 4 su 4

Discussione: download

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    101

    download

    salve a tutti.. dovrei sviluppare un'applicazione che permetta di scaricare via ftp un file dal webserver..conoscete la procedura da seguire per ASP.NET.. ho cercato nel forum..ma niente..
    In realtà il mio problema è più complesso nel senso che il file si trova non in una directory del server ma sottoforma di file binario in un campo di un database.. quindi credo che prima di effettuare il download lo debba estrarre, salvare con il suo formato opportuno (.doc,.xls,..) in una directory del server e poi effettuare il download.. non saprei da che parte farmi..
    non ho neanche idea di come si possa trasformare un file .doc in un file binario.. cambiandone l'estensione?? e di come si possa salvare in un campo del DB.. forse sono andato fuori thread.. scusate..zorz

  2. #2
    il tuo problema non è di per secomplesso. pero' servono piu info.

    Allora:
    il file si trova su un db (access, sql, oracle, mysql), qualsiasi db sia è molto probbabile che sia salvato in un campo di tipo blob (in stile oracle, binary x sql/access). In ogni caso .ASP ti permette di recuperarlo senza grossi problemi è salvarlo in una variabile di tipo stream.

    A questo punto il tuo bel file è pronto per essere salvato dove vuoi.

    Se ho 10 min. ti preparo un esempio...
    e te lo posto qui sotto.
    byz goldfix

  3. #3
    mmm... ho trovato qualcosa di meglio:

    2 esempi direttamente dalla guida .NET

    /*Recupera un campo BLOB*/
    SqlConnection pubsConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=pubs;");
    SqlCommand logoCMD = new SqlCommand("SELECT pub_id, logo FROM pub_info", pubsConn);

    FileStream fs; // Writes the BLOB to a file (*.bmp).
    BinaryWriter bw; // Streams the BLOB to the FileStream object.

    int bufferSize = 100; // Size of the BLOB buffer.
    byte[] outbyte = new byte[bufferSize]; // The BLOB byte[] buffer to be filled by GetBytes.
    long retval; // The bytes returned from GetBytes.
    long startIndex = 0; // The starting position in the BLOB output.

    string pub_id = ""; // The publisher id to use in the file name.

    // Open the connection and read data into the DataReader.
    pubsConn.Open();
    SqlDataReader myReader = logoCMD.ExecuteReader(CommandBehavior.SequentialAc cess);

    while (myReader.Read())
    {
    // Get the publisher id, which must occur before getting the logo.
    pub_id = myReader.GetString(0);

    // Create a file to hold the output.
    fs = new FileStream("logo" + pub_id + ".bmp", FileMode.OpenOrCreate, FileAccess.Write);
    bw = new BinaryWriter(fs);

    // Reset the starting byte for the new BLOB.
    startIndex = 0;

    // Read the bytes into outbyte[] and retain the number of bytes returned.
    retval = myReader.GetBytes(1, startIndex, outbyte, 0, bufferSize);

    // Continue reading and writing while there are bytes beyond the size of the buffer.
    while (retval == bufferSize)
    {
    bw.Write(outbyte);
    bw.Flush();

    // Reposition the start index to the end of the last buffer and fill the buffer.
    startIndex += bufferSize;
    retval = myReader.GetBytes(1, startIndex, outbyte, 0, bufferSize);
    }

    // Write the remaining buffer.
    bw.Write(outbyte, 0, (int)retval - 1);
    bw.Flush();

    // Close the output file.
    bw.Close();
    fs.Close();
    }

    // Close the reader and the connection.
    myReader.Close();
    pubsConn.Close();


    ----------------------------------------------------------
    /*scrive un campo BLOB*/

    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.IO;

    public class EmployeeData
    {
    public static void Main()
    {
    DateTime hireDate = DateTime.Parse("5/21/99");
    AddEmployee("Jones", "Mary", "Sales Representative", hireDate, 5, "jones.bmp");
    }

    public static void AddEmployee(string lastName, string firstName, string title, DateTime hireDate , int reportsTo, string photoFilePath)
    {
    byte[] photo = GetPhoto(photoFilePath);

    SqlConnection nwindConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;");

    SqlCommand addEmp = new SqlCommand("INSERT INTO Employees (LastName, FirstName, Title, HireDate, ReportsTo, Photo) " +
    "Values(@LastName, @FirstName, @Title, @HireDate, @ReportsTo, @Photo)", nwindConn);

    addEmp.Parameters.Add("@LastName", SqlDbType.NVarChar, 20).Value = lastName;
    addEmp.Parameters.Add("@FirstName", SqlDbType.NVarChar, 10).Value = firstName;
    addEmp.Parameters.Add("@Title", SqlDbType.NVarChar, 30).Value = title;
    addEmp.Parameters.Add("@HireDate", SqlDbType.DateTime).Value = hireDate;
    addEmp.Parameters.Add("@ReportsTo", SqlDbType.Int).Value = reportsTo;

    addEmp.Parameters.Add("@Photo", SqlDbType.Image, photo.Length).Value = photo;

    nwindConn.Open();

    addEmp.ExecuteNonQuery();

    nwindConn.Close();
    }

    public static byte[] GetPhoto(string filePath)
    {
    FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
    BinaryReader br = new BinaryReader(fs);

    byte[] photo = br.ReadBytes((int)fs.Length);

    br.Close();
    fs.Close();

    return photo;
    }
    }
    byz goldfix

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    101
    grazie goldfix_1..nel frattempo anch'io ho trovato degli esempi e ho già risolto il problema..comunque grazie ancora per la collaborazione..posso chiderti un'altra cosa.. sò che è fuori thread..ma è semplice.. che senso ha secondo te non dichiarare come static i membri della classe che eredita da 'page'.. e che senso ha invece dichiararli tali..le mie risposte: nessun senso la prima domanda, risparmio di memoria la seconda, in quanto il framework non deve istanziare i vari metodi per tutte le pagine richieste.. sei d'accordo??
    speriamo tu ci sia ancora..è così desolato questo forum..ciao..zorz

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.