java,无法下载的三两原因

一、后台下载功能的代码

response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);

InputStream inputStream = new FileInputStream(filePath);

OutputStream os = response.getOutputStream();

byte[] b = new byte[1024];
int length;
while ((length = inputStream.read(b)) > 0) {
    os.write(b, 0, length);
    downloadedLength += b.length;
}

//关闭

二、诸坑

坑一:需要下载文件时,前端不要使用ajax请求,不然的话即便请求成功,也不会下载文件。可以通过form表单提交的方式请求。

这个问题困扰我很久,参考处https://q.cnblogs.com/q/84808/,多谢这位仁兄。

坑二:

fileName,下载的文件名,一定要加后缀,加后缀,加后缀,重要的事说三遍。

如不加后缀,浏览器无法识别文件类型,下载到的文件也是没有后缀的文件。即便在setContentType中设置了内容类型(比如word对应的contentType类型),如果文件名没有后缀,浏览器下载到的依然是没有后缀的文件。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章