簡體   English   中英

如何從控制器獲取可下載文件以進行查看

[英]How to get downloadable files to view from controller

我在asp.net mvc-5中使用實體框架,並且提供了上傳功能,以FILESTREAM的形式存儲在SQL Server中(文件未存儲在文件夾中,但其內容作為數據庫表中的字節數組)。 現在,我想從數據庫中獲取這些文件,並使它們顯示在視圖中(會有一個鏈接,可以單擊文件名作為文件名,它將開始下載過程)。 此外,表中的各列分別保存文件名,文件擴展名及其內容。 我將為您提供要上傳的模型和控制器,以便您了解我是如何做到的:

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,但是從這種角度來看,我無法滿足我的需求。

試試這個下載文件。

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"); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM