package com.copote.common.utils;
import com.copote.common.constant.FileConst;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
/**
* 文件上传工具类
*/
public class UploadUtil {
/**
* 将MultipartFile转化为file并保存到服务器上的某地
*/
public static String saveFileFromInputStream(MultipartFile file,String fileName) throws IOException {
OutputStream os = null;
InputStream inputStream;
String url =null;
inputStream = file.getInputStream();
String path = FileConst.UPLOAD_DISK + FileConst.UPLOAD_PATH;
try {
byte[] bs = new byte[1024*1024];// 1K的数据缓冲
// 读取到的数据长度
int len;
// 输出的文件流保存到本地文件
File tempFile = new File(path);
if (!tempFile.exists()) {tempFile.mkdirs();}
url = tempFile.getPath() + File.separator + fileName;
os = new FileOutputStream(url);
// 开始读取
while ((len = inputStream.read(bs)) != -1) {
os.write(bs, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
// 完毕,关闭所有链接
try {
if(os != null){
os.close();
}
if(inputStream != null){
inputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return url;
//end
}
/**
* 删除文件
* @param path 文件链接路径
*/
public static void deleteFileByPath(String path){
File file=new File(path);
if(file.exists()&&file.isFile()){
file.delete();
}
}
/**
* 根据byte数组,生成文件
* @param bfile 文件数组
* @param filePath 文件存放路径 C:\Users\test\Desktop\test\
* @param fileName 文件名称 test.xlsx
*/
public static void byte2File(byte[] bfile,String filePath,String fileName){
BufferedOutputStream bos=null;
FileOutputStream fos=null;
File file=null;
try{
File dir=new File(filePath);
if(!dir.exists() && !dir.isDirectory()){//判断文件目录是否存在
dir.mkdirs();
}
file=new File(filePath+fileName);
fos=new FileOutputStream(file);
bos=new BufferedOutputStream(fos);
bos.write(bfile);
}
catch(Exception e){
System.out.println(e.getMessage());
e.printStackTrace();
}
finally{
try{
if(bos != null){
bos.close();
}
if(fos != null){
fos.close();
}
}
catch(Exception e){
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
}