当前位置: 首页 > 知识库问答 >
问题:

从controller MVC Core设置下载文件名的问题

蔚学林
2023-03-14

我试图获取和下载文件从服务器本地文件夹到客户端。但当我尝试下载时(也是下载操作成功),下载文件的名称被自动设置为动作名称。如何更改下载的文件名?

MyController:

 [HttpGet]
 public PhysicalFileResult MYACTIONDOWNLOAD(string filePathAndName)
{
    string downloadPath = Path.Combine(Directory.GetCurrentDirectory(), @"C:\", filePathAndName);
    string filesMimeType = MimeTypesMap.GetMimeType(filePathAndName);
     return new PhysicalFileResult(downloadPath, filesMimeType); 
}

客户端(查看脚本):

<a target="_blank" href="(my website www root url)/MYPROJECTNAME/MYCONTROLLERNAME/MYACTIONDOWNLOAD?filePathAndName=\\192.168.X.X\MYREMOTEDISC-1\MYDOCUMENTS\SCHOOL\10012021_1023350.docx"></a>

当我点击下载操作是okey,但下载的文件名是MyActionDownload.docx,我想更改文件名。

共有2个答案

苗烈
2023-03-14

你可以试试这个方法。

[HttpGet]
    public async Task<IActionResult> Download(string path)
    {
        var memory = new MemoryStream();
        string webRootPath = _HostEnvironment.WebRootPath; 
        var uploads = Path.Combine(webRootPath + path);
        using (var stream = new FileStream(uploads, FileMode.Open))
        {
            await stream.CopyToAsync(memory);
        }
        memory.Position = 0;
        var ext = Path.GetExtension(uploads).ToLowerInvariant();
        return File(memory, "application/octet-stream", "any file name");
    }

_HostEnvironment.webrootPath将获得服务器的绝对路径。如果它来自您的URL,那么您可以避免这种情况。

曾沛
2023-03-14

已安装路径使用

Var bytes=file.readallbytes(“您的路径”)

后来呢

返回文件(字节、mimetype、“想要的名称”);

 类似资料:
  • 我正在使用一个插件从一个表生成一个csv文件,该文件是用“下载”文件名下载的,我如何更改文件名,例如作为dowload。csv

  • 在edge中,我正在访问一个JSP页面,该页面会返回一个文件。它在chrome中工作得很好,但在Edge和Internetexplorer中,我会将mime类型附加到文件名中。 这是响应标头: Edge要求我保存文件,文件名是 persistenceIDs.xlsx.vnd.openxmlformats-officedocument.spreadsheetml.sheet 有什么想法吗?

  • 问题内容: 是否可以获取通过HttpURLConnection下载的文件的名称? 在上面的示例中,我无法从URL中提取文件名,但是服务器会以某种方式向我发送文件名。 问题答案: 您可以使用HttpURLConnection.getHeaderField(String name) 获取标头,该标头通常用于设置文件名: 正如其他答案指出的那样,服务器可能返回无效的文件名,但是您可以尝试使用它。

  • 在我的项目中,我正在上传一个文件。上传时,我将其原始文件名和扩展名保存在数据库中,并将该文件与一些一起保存在服务器上,生成的GUID也与文件名和扩展名一起存储在数据库中。 比如-- -用于上载的文件名为Questions.docx -则orignalFileName将为“问题” -文件扩展名将为“.docx” -上传文件,文件名为“0C1B96D3-AF54-40D1-814D-B863B7528

  • 问题内容: 我是javaFx的新手,并且希望使用scenebuilder进行GUI开发,尽管遇到了类似的问题,但仍可能需要不同的观点,但我遇到了一个问题,尽管在网站或Web上搜索我的运气都不好。我试图在快速构建以测试功能后通过Netbeans加载FXML文件,以便代码简单,但是我无法在控制器中设置根文件。我的代码是以下公共类Divergex扩展的Application { 我尝试过将fxroot更

  • 问题内容: 我正在应用程序中下载动态文件,并使用iframe来模拟ajax。我正在做的是,当下载请求发出后,我将创建一个动态的不可见iframe,并将iframe的src设置为下载网址。我能够成功下载该文件,但要求是显示一个下载下载指示器一旦开始下载,并在下载对话框出现后立即完成。我在创建iframe后提供了回调,以显示下载指示器已成功运行,并在iframe的“ onload”上提供了另一种方法,