2015-10-30 3 views
0

Я работаю в ASP.NET MVC. Я сохранил файл в базе данных, теперь хочу загрузить и отобразить его содержимое. Я работаю в слоях.Ошибка при загрузке файла в ASP.NET MVC

Вот мой код.

Действие контроллера используется для загрузки файла

[HttpPost] 
public ActionResult Edit(int id, UpdateAdvertisement model, HttpPostedFileBase file) 
{ 
    try 
    { 
     AdvertisementDTO add = new AdvertisementDTO();     
     add.DocImage = new byte[file.ContentLength]; 
     add.ContentType = file.ContentType; 
     add.DocName = Convert.ToString(DateTime.Now.Ticks);    
     new AdvertisementHandler().Update(id, add); 
     return RedirectToAction("Index"); 
    } 
    catch 
    { 
     return View(); 
    } 
} 

контроллера для загрузки файла

public FileContentResult DownloadFile(int id) 
    { 
     string DocumentContentType = new AdvertisementHandler().DownloadContent(id); 
     string DocumentName = new AdvertisementHandler().DownloadDocumentName(id); 
     byte[] DocumentImage = new AdvertisementHandler().DownloadImage(id); 
     //return File(filename, contentType, "Report.pdf"); 
     return File(DocumentImage, DocumentContentType, DocumentName); 
     //return File.ReadAllBytes(DocumentName); 
    } 

Business Logic Layer

Эти запросы, которые используются для доступа к базе данных.

public byte[] DownloadImage(int id) 
{ 
    byte[] file = (from f in db.TBL_ADVERTISEMENT 
     where f.ID == id 
     select new AdvertisementDTO 
     { 
      DocImage = f.DOCUMENT_IMG 
     } 
     ).ToArray(); 
    return file; 
} 

public string DownloadContent(int id) 
{ 
    string file = (from f in db.TBL_ADVERTISEMENT 
     where f.ID == id 
     select new AdvertisementDTO 
     { 
      ContentType = f.CONTENTTYPE 
     } 
    ).ToString(); 
    return file; 
} 

public string DownloadDocumentName(int id) 
{ 
    string file = (from f in db.TBL_ADVERTISEMENT 
     where f.ID == id 
     select new AdvertisementDTO 
     { 
     DocName = f.DOC_NAME 
     } 
    ).ToString(); 
     return file; 
} 

Эта ошибка возникает, когда я скомпилировать этот код

Ошибка 1

Не может неявно преобразовать тип 'ORS.DTO.AdvertisementDTO []' до 'байт []'

F: \ Projects \ Online Recruitment System \ ORS.BLL \ AdvertisementHandler.cs 59 28 ORS.BLL

Вот мой AdvertisementDTO ...

namespace ORS.DTO 
{ 
    public class AdvertisementDTO 
    { 
     public int ID { get; set; } 
     public string AddNumber { get; set; } 
     public string Description { get; set; } 
     public byte[] DocImage { get; set; } 
     public string ContentType { get; set; } 
     public string DocName { get; set; } 
     public DateTime StartDate { get; set; } 
     public DateTime EndDate { get; set; } 
     public int StatusID { get; set; } 

     public virtual RecordStatusDTO RecordStatus { get; set; } 
    } 
} 

ответ

0

Вызов .ToArray() на объекте не преобразует его в массив байтов. Вы опустили определение AdvertisementDTO, поэтому я могу только предположить, что он уже является байтовым массивом. Если это не так, отправьте код для AdvertisementDTO, и я обновлю это сообщение.

byte[] file = (from f in db.TBL_ADVERTISEMENT 
        where f.ID == id 
        select f.DOCUMENT_IMG).SingleOrDefault(); 

    return file; 
+0

Код для рекламыDTO теперь опубликован. – mason