Keresés

Hirdetés

Új hozzászólás Aktív témák

  • Inv1sus

    addikt

    válasz Inv1sus #1070 üzenetére

    Elöző kérdésem nem fontos, de az új igen:

    Hogy lehet azt megoldani, hogy egy adatbázisba elmentet képet (varbinary(MAX) típusban) kiolvashassak aspx-be?
    A tanárom szerint egy olyan fapados megoldás kellene, hogy az image ugye src-be kapja a kép elérését. Na oda be kellene egy aspx-es fájlt tenni, ami a bináris képet tartalmazná és a content-type-ja kép lenne az egésznek. Valaki segítsen pls. Ettől függ az ötösöm :(

    *** WEBDESIGN, GRAFIKUS DESIGN, FRONT-END PROGRAMOZÁS ***

  • ArchElf

    addikt

    válasz Inv1sus #1071 üzenetére

    Asszem a PHP (vagy PHP/MySql, vagy talán SQLite, vagy egyéb programozós?) topicban ezt kifejtettem... Használj paraméterezett feltöltést. (MSDN > SqlParameter)

    AE

    Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

  • QuippeR

    tag

    válasz Inv1sus #1071 üzenetére

    Ha esetleg még nem ugrott az ötösöd, akkor segítek:

    <%@ WebHandler Language="C#" Class="FileStream" %>
    using System;
    using System.Web;
    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;

    /// <summary>
    /// Reponsible for flushing out the file from the database to the user.
    /// </summary>
    public class FileStream : IHttpHandler
    {
    public void ProcessRequest (HttpContext context)
    {
    // get the file id
    string fileId = context.Request.QueryString["file"];

    using (SqlCommand command = new SqlCommand())
    {
    // get the file from database
    command.Connection = new SqlConnection("connectionstring");
    command.CommandText = "SELECT * FROM files where file_id = @FileId";
    command.Parameters.AddWithValue("@FileId", fileId);
    command.Connection.Open();
    SqlDataReader reader = command.ExecuteReader();
    if (reader.Read())
    {
    // flush out the binary data to the user
    context.Response.Clear();
    context.Response.ContentType = (string) reader["file_type"];
    context.Response.AddHeader("Content-Disposition", String.Format("inline;filename={0};", reader["file_name"].ToString()));
    context.Response.AddHeader("Content-Length", reader["file_size"].ToString());
    context.Response.BinaryWrite((byte[]) reader["file_content"]);
    context.Response.End();
    }
    }
    }
    public bool IsReusable
    {
    get
    {
    return false;
    }
    }
    }

    Ezt mentsd le egy FileStream.ashx nevű fájlba. A lényege, hogy az url-ben megadod a fájlt id-jét például így: http://localhost/FileStream.ashx?file=4. Az adatbázisban persze a megfelelő adatoknak (file_name, file_size, file_type, file_content) benne kell lennie ehhez.

    A feltöltésnél így tudod kiszedni ezeket az értékeket egy fuNewUpload nevű FileUpload controlból:
    string filename = fuNewUpload.PostedFile.FileName.Substring(fuNewUpload.PostedFile.FileName.LastIndexOf('\\') + 1);
    string filetype = fuNewUpload.PostedFile.ContentType;
    int filesize = fuNewUpload.PostedFile.ContentLength;
    byte[] filecontent = new byte[fuNewUpload.PostedFile.ContentLength];
    fuNewUpload.PostedFile.InputStream.Read(filecontent, 0, fuNewUpload.PostedFile.ContentLength);

Új hozzászólás Aktív témák