环境
其他系统调接口获取一个或多个文件,但是按照平时写的一次只能传输一个文件,多个文件尝试也只能传输第一个,现找到一个方法,即使用压缩文件传输。
多个文件
接口
@RequestMapping(value = "/pickFile")
public String getPickFile(@RequestParam("type") String type, HttpServletRequest request, HttpServletResponse response) {
String baseURL = "D:/pdf/pick/"; // 文件夹服务器上的地址
List<String> fileNameList = xxxx.getPickFilename(type);
if (null != fileNameList && fileNameList.size() > 0) {
String zipName = type + "_pick.zip";
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition", "attachment; filename=" + zipName);
// 下面两行支持跨域
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Method", "POST,GET");
String fileURL = "";
try {
ZipOutputStream out = new ZipOutputStream(response.getOutputStream());
for (String fileName : fileNameList) {
if (StringUtils.isNotBlank(fileName) && !StringUtils.equals("0", fileName)) {
fileURL = baseURL + fileName;
ZipUtils.doCompress(fileURL, out);
response.flushBuffer();
}
}
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
压缩工具类
压缩使用主要包:
java.util.zip.ZipEntry
、java.util.zip.ZipOutputStream
public class ZipUtils {
private static Logger logger = LoggerFactory.getLogger(ZipUtils.class);
private ZipUtils()