需要下载zip文件内容,路径存储在sqlserver中,我在控制器中使用FILERESULT Action方法。 我的控制器看起来像这样:
public FileResult Download(string id)
{
string txtvalue = null; int cat = 0;
string searchType = Session["type"].ToString();
if (searchType == "name")
{
txtvalue = Session["item"].ToString();
}
else if (searchType == "cat")
{
cat = Convert.ToInt32(Session["item"]);
}
int fid =Convert.ToInt32(Session["Fid"]);
var files = _urepo.GetprojectName(fid);
string filename = (from f in files
select f.PRJ_LOCATION).SingleOrDefault();
string contentType = "application/zip";
return File(filename, contentType,"download"+filename);
}
但只有文件下载...内容不下载.. 将提供任何帮助
答案 0 :(得分:2)
尝试这样的事情,首先你需要检查是否从数据库中提取文件?所以条件会帮助你,另一件事就是试图改变"内容类型"
if (filename != null)
{
contentType = "application/force-download";
return File(filename, contentType, Path.GetFileName(filename));
}
注意:我没有发布完整的代码,但唯一可能出错的地方。
答案 1 :(得分:1)
我明白了, 实际上,正如CodeCaster所说,内容在存档时丢失。 后来我用Ajax Call附加了数据。
public FileResult Download()
{
int Id = Convert.ToInt32(TempData["FileID"]);
var files = _urepo.GetprojectName(Id);
string filename = (from f in files
select f.PRJ_LOCATION).SingleOrDefault();
string contentType = "application/zip";
byte[] fileBytes = System.IO.File.ReadAllBytes(filename);
string file=filename.Substring(filename.LastIndexOf("\\")+1);
return File(fileBytes, contentType, file);
}
谢谢大家。