asp.net-mvc – 从我的网页链接下载文件

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 从我的网页链接下载文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有页面与对象表.

我的一个对象属性文件路径,这个文件位于同一个网络中.我想做的是将此文件路径包装在链接下(例如下载),用户点击此链接后,该文件将下载到用户机器中.

所以在我的桌子里面

@foreach (var item in Model)
        {    
        <tr>
            <th width ="150"><p><b><a href="default.asp" target="_blank">Download</a></b></p></th>
            <td width="1000">@item.fileName</td>
            <td width="50">@item.fileSize</td>
            <td bgcolor="#cccccc">@item.date<td>
        </tr>
    }
    </table>

我创建了这个下载链接

<th width ="150"><p><b><a href="default.asp" target="_blank">Download</a></b></p></th>

我想要这个下载链接包装我的文件路径,点击链接将倾向于我的控制器:

public FileResult Download(string file)
{
    byte[] fileBytes = System.IO.File.ReadAllBytes(file);
}

我需要添加到我的代码才能实现?

解决方法

从您的操作返回FileContentResult.
public FileResult Download(string file)
{
    byte[] fileBytes = System.IO.File.ReadAllBytes(file);
    var response = new FileContentResult(fileBytes,"application/octet-stream");
    response.FileDownloadName = "loremIpsum.pdf";
    return response;
}

和下载链接,

<a href="controllerName/Download?file=@item.fileName" target="_blank">Download</a>

链接将使用参数fileName获取您的下载操作的请求.

编辑:对于未找到的文件,您可以,

public ActionResult Download(string file)
{
    if (!System.IO.File.Exists(file))
    {
        return HttpNotFound();
    }

    var fileBytes = System.IO.File.ReadAllBytes(file);
    var response = new FileContentResult(fileBytes,"application/octet-stream")
    {
        FileDownloadName = "loremIpsum.pdf"
    };
    return response;
}

猜你在找的asp.Net相关文章