微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 使用Spring Service中的AJAX GET下载文件

我正在尝试实现一个自动开始下载所请求文件的服务.

这是我的AJAX电话:

function downloadFile(fileName) {
  $.ajax({
    url : SERVICE_URI + "files/" + fileName,
    contentType : 'application/json',
    type : 'GET',
    success : function (data)
    {
      alert("done!");
    },
    error: function (error) {
      console.log(error);
    }
  });
}

这是我的Spring Service方法GET:

@RequestMapping(value = "/files/{file_name}", method = RequestMethod.GET)
public void getFile(@PathVariable("file_name") String fileName,
                    HttpServletResponse response) {
    try {
        // get your file as InputStream
        FileInputStream fis = new FileInputStream( fileName + ".csv" );
        InputStream is = fis;
        // copy it to response's OutputStream
        ByteStreams.copy(is, response.getoutputStream());
        response.setContentType("text/csv");
        response.flushBuffer();
    } catch (IOException ex) {
        throw new RuntimeException("IOError writing file to output stream");
    }

}

当我的客户端从服务器请求现有文件时,执行AJAX success()方法,但文件甚至没有下载.我做错了吗?

解决方法:

不要使用ajax,只需将window.location.href设置为文件的url,并在服务器脚本中设置http内容处置标头以强制浏览器保存文件.

function downloadFile(fileName) {
  window.location.href = SERVICE_URI + "files/" + fileName;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐