图片上传,我的数字人形象表
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