2009-08-31 4 views
0

Я пытаюсь загрузить файл, который я загрузил в поле изображения в моей базе данных MS-SQL. Проблема в том, что когда я пытаюсь открыть файл, он просто говорит System.Byte [] вместо содержания фактического содержимого.Прочитать файл из базы данных

UploadFiles мой класс, который содержит имя файла, идентификатор, FILEDATA и т.д.

public void DownloadUploadedFile(Page sender, UploadFiles uf) 
{ 
    sender.Response.Clear(); 
    sender.Response.ContentType = uf.FileType; 
    sender.Response.AddHeader("Content-Disposition", 
     "attachment; filename=" + uf.FileName); 
    sender.Response.BinaryWrite(uf.FileData); // the binary data 
    sender.Response.End(); 
} 

Здесь я извлечь данные из моей базы данных:

while (reader.Read()) 
        { 
         UploadFiles uf = new UploadFiles(); 
         uf.FileData = encoding.GetBytes(reader["filedata"].ToString()); 
         uf.FileName = reader["name"].ToString(); 
         uf.FileType = reader["filetype"].ToString(); 
         uf.FileId = Convert.ToInt32(reader["id"]); 
         return uf; 
        } 
+0

Вы уверены, что двоичные данные извлекаются/сохраняются в вашем объекте? Можете ли вы показать, как вы получили данные из базы данных? – CSharpAtl

+0

думал, что это может быть связано с поиском ... рад, что вы получили ответ. – CSharpAtl

ответ

2

должен быть

uf.FileData = (byte[])reader["filedata"]; 

Данные возвращаемый массив байтов, и вы звоните ToString() в массиве байт, который только значение по умолчанию возвращения имени класса (система

uf.FileData = encoding.GetBytes(reader["filedata"].ToString()); 

.byte []), который затем преобразуется в массив байтов. Он должен быть сразу удален

+0

Конечно, сначала нужно проверить NULL, который возвращается как DbNull.Value, если поле может иметь нулевые значения. – Pete

+0

Спасибо, что это сработало! Никогда не думал, что это может быть кодировка при извлечении файлов. Поле базы данных не допускает нулевые типы, поэтому в этом случае это необязательно. – Dofs

-1

Try uf.FileName.ToString(), иначе вы получите тип объекта, а не текст свойства FileName.

+0

uf.FileName - это свойство в моем классе, которое содержит имя файла. Я отлаживал его, и он возвращает test.txt. Кроме того, как я упоминаю, UploadFiles не имеет ничего общего с файлом управления загрузкой asp, но является моим собственным классом, содержащим свойства. – Dofs

Смежные вопросы