下载mvc3中存储在数据库中的pdf文件

时间:2013-01-24 07:14:49

标签: asp.net-mvc-3 file-upload

我使用控制器中的以下代码

将几个pdf文件存储在我的数据库中作为二进制格式
    [HttpPost]
    public ActionResult Index(HttpPostedFileBase file)
    {
        Image newImage = new Image();
        newImage.MimeType = file.ContentType;          

        var binaryReader = new BinaryReader(file.InputStream);
        newImage.Data = binaryReader.ReadBytes(file.ContentLength);
        binaryReader.Close();
        objImage.InsertImage(newImage.Data);

        return View();

    }

现在我想根据传递给控制器​​的id下载它们,应该下载pdf文件??

这是我的pdf下载代码,wat我需要添加更多

    public ActionResult Download(int id)
    {
        DataSet da = new DataSet();

        da = objImage.getUserImage(id);
        DataTable dt = new DataTable();
        dt = da.Tables[0];
        Byte[] imagedata=(Byte[])dt.Rows[0]["UsImage"];



    }

3 个答案:

答案 0 :(得分:3)

  

这是我的pdf下载代码,wat我需要添加更多

返回一个ActionResult:

public ActionResult Download(int id)
{
    ...
    byte[] imagedata = (byte[])dt.Rows[0]["UsImage"];
    return File(imagedata, "image/png");
}

如果您希望浏览器弹出“另存为”对话框而不是以内联方式显示图像,请指定文件名:

public ActionResult Download(int id)
{
    ...
    byte[] imagedata = (byte[])dt.Rows[0]["UsImage"];
    return File(imagedata, "image/png", "foo.png");
}

显然,MIME类型和文件名也可能来自您的数据库。在这个例子中,我对它们进行了硬编码,但你可以调整这段代码。

答案 1 :(得分:0)

返回文件(result.Content,result.Extension.Replace(“。”,“”));

public ActionResult Download(int id)
{
    DataSet da = new DataSet();

    da = objImage.getUserImage(id);
    DataTable dt = new DataTable();
    dt = da.Tables[0];
    Byte[] imagedata=(Byte[])dt.Rows[0]["UsImage"];


    return File(imagedata, "image/png");
}

答案 2 :(得分:0)

    public ActionResult GetPdf(int id)
    {

        ProjectProfile projectprofile = db.ProjectProfiles.Find(id);
        var image = projectprofile.pdf;
        return File(image, "application/pdf");
    }