Атрымаць файл BLOB

Я загрузіць BLOB-файлы ў маёй базе дадзеных SQL. Я ствараю дынамічны гіперспасылак перанакіраванне майго downloading.aspx.cs, каб загрузіць файлы.

Калі я націскаю на яго, адзінае, што я атрымаць нешта накшталт гэтага:

*����JFIF,,��ExifMM*�   ���(1�2;%+>P?`���7��i��%��NIKON CORPORATIONNIKON D3-��'-��'Adobe Photoshop CS4 Macintosh2010:11:19 21:53:25 9�I�@d!ddGddd+�K�r� (��Ƃ�Έ"�'@�0221�֐����� ���� � ��,��42��42��42�0100����Р�d����J����R�b����   � ��Z @( 2010:11:19 20:44:392010:11:19 20:44:39 � ASCII  R030100��(�HH����JFIFHH��Adobe_CM��Adobed����* 

Гэта мой Page_Load код у гэтым downloading.aspx:

protected void Page_Load(object sender, EventArgs e)
{
    string filename = Request["file"].ToString();
    var conString = ConfigurationManager.ConnectionStrings["LocalSqlServer"];
    string strConnString = conString.ConnectionString;
    SqlConnection dbConnection = new SqlConnection(strConnString);
    dynamic queryString = ("SELECT Data FROM Files WHERE Name = '" + filename + "'");
    SqlCommand theCommand = new SqlCommand(queryString, dbConnection);
    dbConnection.Open();
    SqlDataReader reader = theCommand.ExecuteReader();

    if (reader.Read() && reader != null)
    {
        Byte[] bytes;
        bytes = Encoding.UTF8.GetBytes(String.Empty);
        bytes = (Byte[])reader["Data"];
        Response.BinaryWrite(bytes);

        reader.Close();
    }

    dbConnection.Close();
}

Можа хто-небудзь сказаць мне, чаму? Дзякуй.

1

2 адказы

Вы павінны ўсталяваць тып змесціва, а таксама дадаць размяшчэнне кантэнту для вашых загалоўкаў адказу, як так:

Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
 Response.AddHeader("content-disposition", "attachment;  filename=whatever.xlsx");
 Response.BinaryWrite(yourbytes);

Note: content-type has to be specific to the type of file you are streaming. If an image, it has to be something like "image/jpg"; etc. Similarly for the header; if it's an image, probably you want to set the extension on the filename part to be "file.jpg". Above code is just an example

5
дададзена
А калі я хачу, каб загрузіць і .cs, Visual Studio файлы PDF? Як я павінен рабіць? У адваротным выпадку, ваш код выдатна працуе! Вялікае вам дзякуй!
дададзена аўтар Kiwimoisi, крыніца
Perfet! Вялікае вам дзякуй! Гэта добра працуе!
дададзена аўтар Kiwimoisi, крыніца
@Emged Вы павінны ведаць тып файла вы струменевую карыстачу і ўсталяваць размяшчэнне кантэнту і тып кантэнту адпаведным чынам. Мой савет у тым, што вы захоўваеце тып файла ў базе дадзеных, а таму вы не павінны спрабаваць выявіць аналізавальных байт.
дададзена аўтар Icarus, крыніца
@Emged проста выкарыстоўваць адпаведны тып пантамімы для вашага файла. iana.org/assignments/media-types/image/index.html

Вам неабходна адправіць Content-Type, Content-Length і загаловак Content-Disposition ў браўзэр, каб ён мог зразумець двайковыя дадзеныя.

3
дададзена
Як сказаў Ікар. Дзякуй за ваш адказ таксама, гэта мне дапамагло!
дададзена аўтар Kiwimoisi, крыніца