1. byte[] 转换为 MutipartFile
公司网络区别外网和内网,文件由外网上传,保存到数据库,数据库存储的二进制文件。内网通过数据库查询获取该文件信息上传到内部文件服务器上,故用到该转换方式:
byte[] bytes;
InputStream fis = new ByteArrayInputStream(bytes);
String fileName = "xxx.jpg";
DiskFileItemFactory diskFactory = new DiskFileItemFactory();
DiskFileItem fileItem = (DiskFileItem)diskFactory .createItem("file",mediaType.ALL_VALUE,fileName);
OutputStream fos = fileItem.getOutputStream();
IOUtils.copy(fis,fos);
MultipartFile multipartFile = new ConmonsMultipartFile(fileItem);
2.文件打包下载
FileZip.java
public class FileZip{
private String chName;//文件名
private File srcFile; //文件
}
public void downloadForZip(HttpServletResponse response){
resonse.setContentType("application/octet-stream");
resonse.addHeader("Content-Disposition","attachment;filename*=UTF-8"+URLEncoder.encode(zipNname)+".zip");
try(OutputStream out =response.getOutputStream();ZipOutputStream zos = new ZipOutputSteam(out)){
for(FileZip fileZip:fileZips){
byte[] buf = new byte[2*1024]
File srcFile = fileZip.getSrcFile();
zos.putNextEntry(new ZipEntry(fileZip.getChName()));
int len;
try(FileInputStream in = new FileInputSteam(srcFile)){
while((len=in.read(buf)) !=-1 ){
zos.write(buf,0,len);
}
zos.closeEntry();
}catch(Exception e){
}
}
}catch(Excption e){
}
}
本文介绍了一种将byte[]类型数据转换为MultipartFile的方法,用于在网络环境中从外网上传文件并保存至数据库,再由内网读取并上传至内部文件服务器的过程。同时,还提供了一个文件打包下载的实现方案,通过使用ZipOutputStream进行多文件的压缩并下载。

被折叠的 条评论
为什么被折叠?



