0

我使用实体框架在asp.net MVC-5查看和我有提供的功能来上传存储在SQL Server作为FILESTREAM文件(文件未存储在文件夹中,但其内容作为数据库表中的字节数组)。现在我想从数据库中获取这些文件,并使它们出现在视图中(将会有一个链接作为文件名,您可以点击它并开始下载过程)。此外,表中还有列分别保存文件名,文件扩展名及其内容。 我将为您提供我的模型和控制器进行上传,所以你必须知道我是怎么做的:如何让下载的文件从控制器

public class File 
{ 
    [Key] 
    public int fileId{ get; set; } 

    [Required] 
    public byte[] fileContent{ get; set; } 

    public string fileUrl { get; set; } 

    public string fileExtension{ get; set; } 

    public string fileName{ get; set; } 
} 

[HttpPost] 
public ActionResult UploadFile([Bind(Include = "Title, File")] FileViewModel 
fileModel) 
{ 
    if (ModelState.IsValid) 
    { 
     var fileData = new MemoryStream(); 
     fileModel.File.InputStream.CopyTo(fileData); 

     string name = Path.GetFileName(fileModel.File.FileName); 
     string extension= Path.GetExtension(fileModel.File.FileName); 

     var file = new FileModel { fileName = name, 
     fileExtension= extension, fileContent= fileData.ToArray() }; 
     _context.File.Add(file); 

     _context.SaveChanges(); 

     return RedirectToAction("UploadFile"); 
    } 
    return View(fileModel); 
} 

我试图寻找答案,但每个响应做一些事情,我不需要。我查阅了FileStreamResult,但从这个角度来看,我无法满足我的需求。

回答

0

试试这个下载文件。

var fileanme ="your filename with path"; 
var fileBytes = System.IO.File.ReadAllBytes(fileanme); 
Response.AppendHeader("Content-Disposition", "inline; filename='abc.pdf'"); 
return File(fileBytes, "application/pdf"); 
+0

我看到类似这样的东西,但问题在于File方法的第二个参数中的魔术字符串。因为我有多种类型可以发布和下载,所以它有点棘手。我会记住这段代码。谢谢。 –