【问题标题】:Download files from folder with webmatrix使用 webmatrix 从文件夹下载文件
【发布时间】:2014-04-10 01:23:31
【问题描述】:

我创建了一个文件夹来获取用户上传的文件。但是,当我尝试下载文件时,某些扩展无法下载。

我有这段代码可以列出文件夹中的所有文件,我可以毫无问题地查看所有文件。

@foreach (string fullFilePath in Directory.GetFiles(Path.Combine(Server.MapPath("~/uploadedFiles"),"Ticket Id - "+@id)))
                {
                    <div class="linkFicheiros"><a href="@Href("~/uploadedFiles","Ticket Id - "+@id, Path.GetFileName(fullFilePath))">@Path.GetFileName(fullFilePath)</a></div>
                }

用这条线

<a href="@Href("~/uploadedFiles","Ticket Id - "+@id, Path.GetFileName(fullFilePath))">@Path.GetFileName(fullFilePath)</a>

我可以下载带有扩展名的文件:“.zip”、“.xls”,但是像“.msg”这样的扩展名(有时用户需要上传这个扩展名)我收到一个错误“找不到页面”。即使是“.jpg”而不是下载文件,它也会在浏览器上打开图像。

我认为这是我试图访问文件的方式,但我无法找到解决方案。

有什么想法吗?

【问题讨论】:

    标签: razor webmatrix


    【解决方案1】:

    浏览器会尝试始终查看文件的内容。如果是 .jng 等图像文件,但如果有 .zip 文件,它会让用户下载并打开它。因为浏览器打不开。

    您需要将文件推送给用户。为此,您可以尝试以下代码:

    var file = Server.MapPath("~/images/" + Request["img"]);
    Response.AppendHeader(
    "content-disposition", "attachment; filename=" + 
    Request["img"]);
    Response.ContentType = "application/octet-stream";
    Response.TransmitFile(file);
    

    现在,您可以看到在我分享的代码中,文件是一个变量,它被指向文件系统中的文件。请注意,有一个查询字符串参数,它将与 URL 一起发送,例如:

    下载图片

    现在将附加标题,并且

    Request.ContentType = "application/octet-stream"
    

    用于强制浏览器显示打开/保存对话框。

    然后把传输文件下载下来。

    仅在需要时执行代码

    要仅执行该下载代码块,您需要将块中的值设置为条件为真。例如,您可以使用参数来检查是否下载文件。尝试一些简单的事情,例如,

    <a href="~/download_file/image_link.png?download=true>Download</a>
    

    然后在后面的代码上使用这个:

    var download = Request.QueryString["download"];
    if(download == "true") {
      /* place the code here */
    }
    

    现在它只会在条件为真时执行,否则它会跳过那部分。

    【讨论】:

    • 感谢您的帮助,只有一件事。我如何将其分配给每个文件。就像为文件夹中的每个文件创建一个链接一样?
    • 你可以循环使用 foreach 循环或类似的东西。
    • 所以我把你的例子放在我的代码上,当重新加载页面时,总是打开对话框下载文件。我知道要求代码是不好的,但是你能用你的例子编辑我的问题,只有当我点击文件的链接时才会出现对话框?我真的很挣扎。再次感谢您的帮助
    • 将其用作if(IsPost) { .. code here .. },或者尝试使用变量来检测条件并仅在用户单击“下载”按钮时执行该块...
    • 现在看看答案,我希望它现在回答你的问题:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    • 2019-02-13
    • 2020-08-25
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多