现在有一个导出文本文件后,文本文件能用 GBK 编码打开的需求,但是原来的代码是这样的
InputStream inputStream = minioUtil.getObject(minioConfig.getBucketName(), fileVersion.getFsId());
然后设置响应体的文件类型和响应头
response.setContentType(contentType);
response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\"");
response.setHeader("Content-Length", "" + length);
response.setHeader("fileName", "" + fileName);
然后通过这个工具类去把 inputstream 流到 outputstream
IOUtils.copy(inputStream, outputStream);
我的想法一开始是用
Reader r = new InputStreamReader(inputStream,"utf-8");
BufferedReader br = new BufferedReader(r);
Writer w = new OutputStreamWriter(outputStream,"GBK");
BufferedWriter bw = new BufferedWriter(w);
String s = null;
while((s= br.readLine())!=null){
bw.write(s);
}
br.close();
bw.close();
发现导出不了,发送的请求是 pending ,然后过了两分钟响应 200 ,弹不出文件保存框。 然后尝试用这个
byte[] buffer = new byte[8192];
int n;
byte[] dest = new byte[8192];
while(-1 != (n = inputStream.read(buffer))) {
dest=new String(buffer,0,n,"UTF-8").getBytes("GBK");
outputStream.write(dest);
}
也失败,发送请求 pending ,响应是 504 Gateway Time-out nginx ,弹不出文件保存框。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.