Получить BLOB-файл - PullRequest
       7

Получить BLOB-файл

1 голос
/ 28 октября 2011

Я загружаю BLOB-файлы в свою базу данных SQL. Я создаю динамическую гиперссылку, перенаправляющую на мой download.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 в этом файле download.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();
}

Может кто-нибудь сказать мне, почему? Спасибо.

Ответы [ 2 ]

5 голосов
/ 28 октября 2011

Вам необходимо установить тип содержимого и добавить расположение содержимого в заголовки ответа следующим образом:

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

Примечание : тип содержимого должен соответствовать типу потокового файла. Если изображение, это должно быть что-то вроде «image / jpg»; и т. д. аналогично для шапки; если это изображение, возможно, вы хотите установить расширение для части имени файла как «file.jpg». Приведенный выше код является лишь примером

3 голосов
/ 28 октября 2011

Вам необходимо отправить заголовки Content-Type, Content-Length и Content-Disposition в браузер, чтобы он мог понимать двоичные данные.

...