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

下载文件Safari

南宫奇思
2023-03-14

我试图触发文件下载,我有问题这样做Safari(火狐

  @RequestMapping(method = RequestMethod.GET, produces = "text/csv")
  @ResponseBody
  public String getReports(
      final HttpServletResponse response,
      final @RequestParam String data) throws ParseException {
    response.setHeader("Content-type", "text/csv; charset=utf-8");
    response.setHeader("Content-Disposition","attachment; filename='view.csv'");
    String csv = exportCurrentService.extractMatrix(data);
    response.setContentLength(csv.length());

    return csv;
  }

这是我的客户代码:

  downloadURI(url, name) {
    const a = document.createElement('a');
    a.href = url;
    a.download = name;
    document.body.appendChild(a);
    a.click();
    document.body.removeChild(a);
  }

Safari响应在屏幕上打印出来(加载在同一页上)。

注意:我尝试过其他建议的方法,但每个方法都有自己的问题。

更新:在响应标头中,我看到内容处理被设置为内联而不是附件。为什么会发生这种事?

我做错了什么?

共有3个答案

宗政永望
2023-03-14

我的服务被放置在路由模块(它是所有微服务的代理)后面。问题是在这个模块(代理)中,它覆盖了微型应用服务的标题和cookie。

按照问题中的描述设置代码就成功了。

耿俊
2023-03-14

这不会编译,它只是代表你应该做什么。

response.setContentType("application/force-download");
response.setContentLength((int)f.length());
        //response.setContentLength(-1);
response.setHeader("Content-Transfer-Encoding", "binary");
response.setHeader("Content-Disposition","attachment; filename=\"" + "xxx\"");//fileName);
...
...
File f= new File(fileName);

InputStream in = new FileInputStream(f);
BufferedInputStream bin = new BufferedInputStream(in);
DataInputStream din = new DataInputStream(bin);

while(din.available() > 0){
    out.print(din.readLine());
    out.print("\n");
    //this is from another answer I saw awhile ago while trying to do the same thing
}

这是我在尝试做同样的事情时看到的另一篇文章。最初的作者是维尼特·雷诺兹。我是新来的,所以如果这是一个坏习惯,请告诉我。

云默
2023-03-14

尝试不使用@ResponseBodyproducts=MediaType。应用程序\u JSON\u UTF8\u值

 类似资料:
  • 下载 <?php /** * 下载文件请求示例 */ require dirname(__DIR__) . '/vendor/autoload.php'; use Yurun\Util\HttpRequest; use Yurun\Util\YurunHttp; use Yurun\Util\YurunHttp\Handler\Swoole; $url = 'http://www.baid

  • 问题内容: 我正在尝试使用Flask创建一个Web应用程序,该应用程序允许用户上传文件并将其提供给其他用户。现在,我可以将文件正确地上传到upload_folder了。但是我似乎找不到找到让用户下载回来的方法。 我将文件名的名称存储到数据库中。 我有一个为数据库对象服务的视图。我也可以删除它们。 在我的HTML中,我有: 和下载视图: 但它正在返回: 未找到 在服务器上找不到请求的URL。如果您手

  • 问题内容: 我是使用Django的新手,我正在尝试开发一个网站,用户可以在其中上传许多excel文件,然后将这些文件存储在媒体文件夹Webproject / project / media中。 然后,该文档会与它们上载的任何其他文档一起显示在列表中,你可以单击这些文档,它会显示有关它们的基本信息以及他们上载的excelfile的名称。从这里,我希望能够使用链接再次下载相同的excel文件: 我的网

  • 问题内容: 我正在使用简单的文件下载脚本: 它在最大200mb的本地服务器上运行。 当我在我的网站上尝试此代码时,它将下载173KB而不是200MB的文件。 我检查了所有内容,编写了一些自定义代码(使用ob函数和fread而非readfile),但无法下载大文件。 谢谢您的回答。 我正在使用Apache 2.2,PHP 5.3 可以处理所有大文件的所有PHP设置。(执行时间,内存限制,… 问题答案

  • 当我尝试使用Java代码以编程方式下载文件时,遇到了一个异常: 下面是我的代码,包括我想下载的文件: 最初我尝试使用协议下载,但它给我一个状态代码,因此我意识到它重定向到。但是,从上面给出了。使用浏览器,下载工作完美无缺。如何使用Java代码正确下载文件?

  • 我有一个文件表示为块的列表,目标是下载所有块,加入并保存为一个文件。 它应该适用于大文件 应该是跨浏览器解决方案 null null null null 但我仍然无法实现我的目标与涵盖的需求… 如果有人有经验,最好的解决方案,我恳请分享它在这里。谢谢