Java导出zip压缩包,压缩包权限处理
问题现象
已经上线的项目因为客户更换国产系统,导出的EXCEL审计日志数据无法编辑,经过查看文档权限,发现用户对文档没有操作权限,无法直接打开。但是将文档下载至Windows上后,再将压缩包解压,解压后的Excel文档在国产系统上具有权限,由此推测是因为压缩包内的文档没有权限导致。
分析问题
经过在网上查询资料,有说是因为服务运行的用户没有权限,也有说是因为临时存放压缩包的文件夹没有赋权导致,将这些一一尝试之后,问题仍然没有得到解决。将压缩后的临时文档生成后不进行删除后发现,压缩包是有权限的,但是压缩包解压后文档没有权限,由此推测是因为文档压缩时没有赋权导致。
以下为文档压缩时的原始代码
ZipOutputStream zos = null ;
try {
zos = new ZipOutputStream(out);
zos.setEncoding("UTF-8");
for (File srcFile : srcFiles) {
byte[] buf = new byte[BUFFER_SIZE];
ZipEntry zipEntry=new ZipEntry(URLDecoder.decode(srcFile.getName(),"UTF-8"));
zipEntry.setUnixMode(664);
zos