图片上传,我的数字人形象表
parent
916954454c
commit
12bcc9f503
@ -0,0 +1,146 @@
|
|||||||
|
package com.pjilisense.flxai.utils;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.*;
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public class FileUtil {
|
||||||
|
|
||||||
|
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||||
|
|
||||||
|
@Value("${file.common.uploadWindow}")
|
||||||
|
private String diskPath;
|
||||||
|
@Value("${file.common.uploadLinux}")
|
||||||
|
private String uploadLinux;
|
||||||
|
|
||||||
|
@Value("${file.common.uploadUrl}")
|
||||||
|
private String uploadUrl;
|
||||||
|
|
||||||
|
public String uploadFile(MultipartFile multipartFile){
|
||||||
|
String relPath="uploads/";
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
|
||||||
|
relPath = relPath+sdf.format(new Date()).substring(0,6)+"/";
|
||||||
|
//⽂件的完整名称,如spring.jpeg
|
||||||
|
String filename = multipartFile.getOriginalFilename();
|
||||||
|
//⽂件后缀,如.jpeg
|
||||||
|
assert filename != null;
|
||||||
|
String suffix = filename.substring(filename.lastIndexOf("."));
|
||||||
|
relPath =relPath+"/"+UUID.randomUUID().toString().replace("-","")+"."+suffix;
|
||||||
|
//⽬标⽂件
|
||||||
|
File descFile = new File(getFilepath(relPath));
|
||||||
|
//判断⽬标⽂件所在的⽬录是否存在
|
||||||
|
if (!descFile.getParentFile().exists()) {
|
||||||
|
descFile.getParentFile().mkdirs();
|
||||||
|
}
|
||||||
|
try (InputStream is = multipartFile.getInputStream();
|
||||||
|
BufferedInputStream bis = new BufferedInputStream(is);
|
||||||
|
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(descFile))) {
|
||||||
|
int num = 0;
|
||||||
|
while ((num = bis.read()) != -1) {
|
||||||
|
bos.write(num);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
//log.error(e.getMessage());
|
||||||
|
throw new RuntimeException("文件上传错误,请联系管理员");
|
||||||
|
}
|
||||||
|
return relPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return int 删除结果 1 已删除 0 未删除
|
||||||
|
*/
|
||||||
|
public int delFile(String filepath, String fileName) {
|
||||||
|
String rootPath = getFilepath (filepath);
|
||||||
|
File file = new File(rootPath);
|
||||||
|
if (file.exists()) {
|
||||||
|
if(file.isDirectory()) {
|
||||||
|
File filex = new File(rootPath+"/"+fileName);
|
||||||
|
if(filex.exists()) {
|
||||||
|
filex.delete();
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
file.delete();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void downLoadFile(String filepath, String filename, HttpServletResponse response){
|
||||||
|
String rootPath = getFilepath (filepath);
|
||||||
|
File file = new File(rootPath);
|
||||||
|
if(file.exists()){
|
||||||
|
InputStream inputStream = null;
|
||||||
|
OutputStream outputStream = null;
|
||||||
|
try {
|
||||||
|
// 读到流中
|
||||||
|
if(file.isDirectory()) {
|
||||||
|
inputStream = new FileInputStream(filepath +"/"+ filename);// 文件的存放路径
|
||||||
|
} else {
|
||||||
|
inputStream = new FileInputStream(filepath);//filepath可能包含文件名
|
||||||
|
}
|
||||||
|
response.reset();
|
||||||
|
response.setContentType("application/octet-stream");
|
||||||
|
response.addHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(filename, "UTF-8"));
|
||||||
|
outputStream = response.getOutputStream();
|
||||||
|
byte[] b = new byte[1024];
|
||||||
|
int len;
|
||||||
|
//从输入流中读取一定数量的字节,并将其存储在缓冲区字节数组中,读到末尾返回-1
|
||||||
|
while ((len = inputStream.read(b)) > 0) {
|
||||||
|
outputStream.write(b, 0, len);
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
//log.error(e.getMessage(), e);
|
||||||
|
}finally {
|
||||||
|
try {
|
||||||
|
inputStream.close();
|
||||||
|
inputStream.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
//log.error(e.getMessage(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFilepath (final String filepath) {//filepath可能包含文件名
|
||||||
|
String rootPath = getRootpath();
|
||||||
|
rootPath = rootPath +"/"+ filepath;
|
||||||
|
rootPath =rootPath.replace("//","/");
|
||||||
|
if(rootPath.endsWith("/")){
|
||||||
|
rootPath=rootPath.substring(0,rootPath.length()-1);
|
||||||
|
}
|
||||||
|
return rootPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRootpath () {//filepath可能包含文件名
|
||||||
|
String rootPath = null;
|
||||||
|
if (System.getProperty("os.name").startsWith("Windows")) {
|
||||||
|
rootPath = diskPath;
|
||||||
|
} else if (System.getProperty("os.name").startsWith("Linux")) {
|
||||||
|
rootPath = uploadLinux;
|
||||||
|
}
|
||||||
|
rootPath =rootPath.replace("//","/");
|
||||||
|
if(rootPath.endsWith("/")){
|
||||||
|
rootPath=rootPath.substring(0,rootPath.length()-1);
|
||||||
|
}
|
||||||
|
return rootPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue