在ASP.NET MVC中下载文件时出错
本文关键字:文件 出错 下载 ASP NET MVC | 更新日期: 2023-09-27 18:19:51
我在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);
}
业务逻辑层
这些是用于访问数据库的查询。
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[]"隐式转换为"byte[]"
F: ''项目''在线招聘系统'' ORS.BLL''广告处理程序.cs 59 28 ORS.BLL
这是我的广告DTO。。。
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; }
}
}
对对象调用.ToArray()
不会将其转换为字节数组。您省略了AdvertisementDTO
的定义,所以我只能猜测它已经是一个字节数组。如果不是这样的话,请发布AdvertisementDTO
的代码,我会更新这篇文章。
byte[] file = (from f in db.TBL_ADVERTISEMENT
where f.ID == id
select f.DOCUMENT_IMG).SingleOrDefault();
return file;