java中客户端拿到下载文件返回的文件流,如何生成文件呢?

客户端得到文件流,但是将其写出到文件的时候,生成的文件总是打不开,这个是怎么回事啊?求助!!!!!

6个回答

如果说生成的文件打不开的话,我想你上传文件的时候是否有把文件的后缀上传上去,或者说你下载的时候获取文件名有没有把后缀漏掉

qq_35728177
Tsui丶 回复海上升明月光华照九州: 那应该是你操作的文件格式问题了,字符流主要针对一些文本文档(比字节流操作的效率要高),比如.txt、.doc,而pdf就不行。 字节流几乎可以对任何文件类型进行操作,主要是对非文件类型的,如媒体文件(音频,视频,图片…)。这样是会造成文件打不开的情况,如果是这种情况,你可以试下换一个流。另外,文件操作完成,一定要记得关闭流。
大约 3 年之前 回复
lhzxuewen
海上升明月光华照九州 都有的,这个没有漏掉。
大约 3 年之前 回复

我觉得是写出的流出了问题,流的格式什么的

lhzxuewen
海上升明月光华照九州 源码字节有点多,我回复在下面吧,谢谢哈
大约 3 年之前 回复

InputStream is = null; OutputStream os = null; is = new FileInputStream(tempFileRootPath+"/"+file_path+file_name);String temp = tempFileRootPath+"/"+file_path+file_name; response.setHeader("Content-disposition", "attachment;filename="+ new String(temp.getBytes("GBK"),"ISO-8859-1")); response.setContentType("application/x-msdownload;charset=UTF-8"); os = response.getOutputStream(); int i = 0;byte[] b = new byte[10240]; while ((i = is.read(b, 0, b.length)) != -1) { os.write(b, 0, i); } os.flush();is.close(); os.close();源码的格式是这样的。

你把这个response.setContentType("application/x-msdownload;charset=UTF-8");换成response.setContentType("multipart/form-data"); 试一下

你的流你要清楚是什么格式的,是TXT、JPG还是PDF还是Excel的;不同的流你最后保存的后缀名是不同的,请使用commons-io的方法达到目的,参考下列代码:


String filePath = "C:/123.txt";
InputStream in = null;
FileUtils.copyInputStreamToFile(in,new File(filePath));

你debug看下你从请求端返回的流的字节有多长

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐