【问题标题】:Rename a file when clicking at a hyperlink to download a file using WebMatrix单击超链接以使用 WebMatrix 下载文件时重命名文件
【发布时间】:2013-02-25 15:22:27
【问题描述】:

我正在使用WebMatrix。我将 abc.doc 文件上传到文件夹。创建一个超链接来下载文件。示例:<a href="~/uploads/StudyMaterial/abc.doc">

当我点击链接时,将下载名为 abc.doc 的文件。下载文件时如何重命名为Hello.doc?

【问题讨论】:

  • 您需要一个文件服务器/处理程序将文件发送到客户端并给它一个新名称。如果您直接链接到 abc.doc,则 IIS 只是直接发送文件,因此您没有重命名它的选项。您能否详细说明您已经尝试过什么以及您希望完成什么?

标签: webmatrix


【解决方案1】:

为了重命名文件,您可以在将Content-Disposition 标头添加到响应时设置filename 属性:

Response.AppendHeader("Content-Disposition", "attachment; filename=\"Hello.doc\"");

【讨论】:

  • 抱歉标记错误。 @foreach(var i in materials){
  • @k.Title
  • } 我应该在哪里添加 Response.AppendHeader ()?
  • 您将需要一个 Razor 页面来提供您的文件。然后您将参考此页面:<a href="~/download.cshtml/@i.Title">@k.Title</a>。在此页面中,您会将文件流式传输到响应并添加 Content-Disposition 标头,这将允许您更改其名称。
  • 我试过 Response.WriteFile("~/uploads/StudyMaterial/25.docx"); Response.AppendHeader("Content-Disposition","attachment; filename=hheelo.docx");当我试图打开下载的文件时,它说文件已损坏。是不是我用错了方法?
  • 这是正确的做法。尝试在写入文件之前清除响应缓冲区 (Response.Clear())。
  • 只有docx文件不能直接打开。 txt、doc、ppt、pdf都没有问题。
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签