remove commons-fileupload

This commit is contained in:
thinkgem
2022-05-05 11:19:48 +08:00
parent 79a002684e
commit 2633d6b06d

View File

@@ -10,15 +10,9 @@ import java.util.Map;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.MultipartHttpServletRequest;
import com.jeesite.common.codec.EncodeUtils;
import com.jeesite.common.image.ImageUtils; import com.jeesite.common.image.ImageUtils;
import com.jeesite.common.io.FileUtils; import com.jeesite.common.io.FileUtils;
import com.jeesite.common.media.VideoUtils; import com.jeesite.common.media.VideoUtils;
@@ -32,55 +26,33 @@ import com.jeesite.common.ueditor.define.State;
public class BinaryUploader { public class BinaryUploader {
public static final State save(HttpServletRequest request, public static final State save(HttpServletRequest request,
Map<String, Object> conf) { Map<String, Object> conf) {
FileItemStream fileStream = null; // 原始上传
MultipartFile fileStream2 = null; // Spring MVC 上传 String contentType = request.getContentType();
boolean isAjaxUpload = request.getHeader("X-Requested-With") != null; if (!("POST".equals(request.getMethod()) && contentType != null
&& contentType.startsWith("multipart/"))) {
if (!ServletFileUpload.isMultipartContent(request)) {
return new BaseState(false, AppInfo.NOT_MULTIPART_CONTENT); return new BaseState(false, AppInfo.NOT_MULTIPART_CONTENT);
} }
ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());
if ( isAjaxUpload ) {
upload.setHeaderEncoding( EncodeUtils.UTF_8 );
}
try { try {
FileItemIterator iterator = upload.getItemIterator(request); MultipartFile file = null;
if (request instanceof MultipartHttpServletRequest){
while (iterator.hasNext()) { MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
fileStream = iterator.next(); Iterator<String> it = multiRequest.getFileNames();
while (it.hasNext()) {
if (!fileStream.isFormField()) { MultipartFile f = multiRequest.getFile(it.next());
if (f != null && !f.isEmpty() && f.getOriginalFilename() != null) {
file = f;
}
break; break;
} }
fileStream = null;
} }
if (file == null) {
if (fileStream == null) {
// 原始上传无文件则检查是否是Spring MVC上传 ThinkGem
MultipartFile file = null;
if (request instanceof MultipartHttpServletRequest){
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
Iterator<String> it = multiRequest.getFileNames();
while (it.hasNext()) {
file = multiRequest.getFile(it.next());
break;
}
}
if (file != null && !file.isEmpty() && file.getOriginalFilename() != null) {
fileStream2 = file;
}
}
if (fileStream == null && fileStream2 == null) {
return new BaseState(false, AppInfo.NOTFOUND_UPLOAD_DATA); return new BaseState(false, AppInfo.NOTFOUND_UPLOAD_DATA);
} }
String savePath = (String) conf.get("savePath"); String savePath = (String) conf.get("savePath");
String originFileName = fileStream != null ? fileStream.getName() : fileStream2.getOriginalFilename(); String originFileName = file.getOriginalFilename();
String suffix = FileType.getSuffixByFilename(originFileName); String suffix = FileType.getSuffixByFilename(originFileName);
originFileName = originFileName.substring(0, originFileName = originFileName.substring(0,
@@ -97,29 +69,36 @@ public class BinaryUploader {
String physicalPath = FileUtils.path((String) conf.get("rootPath") + savePath); String physicalPath = FileUtils.path((String) conf.get("rootPath") + savePath);
InputStream is = fileStream != null ? fileStream.openStream() : fileStream2.getInputStream(); InputStream is = null;
State storageState = StorageManager.saveFileByInputStream(is, physicalPath, maxSize); State storageState = null;
is.close(); try {
is = file.getInputStream();
storageState = StorageManager.saveFileByInputStream(is, physicalPath, maxSize);
} finally {
if (is != null) {
is.close();
}
}
if (storageState.isSuccess()) { if (storageState != null && storageState.isSuccess()) {
int actionCode = ((Integer) conf.get("actionCode")).intValue(); int actionCode = ((Integer) conf.get("actionCode")).intValue();
String ctx = request.getContextPath(); // ThinkGem 修正上传图片后返回无contextpath问题 String ctx = request.getContextPath(); // ThinkGem 修正上传图片后返回无contextpath问题
// 上传图片后,进行图片压缩 // 上传图片后,进行图片压缩
if (actionCode == ActionMap.UPLOAD_IMAGE){ if (actionCode == ActionMap.UPLOAD_IMAGE){
// 如果开启了压缩图片 // 如果开启了压缩图片
if ((Boolean)conf.get("imageCompressEnable")){ if ((Boolean)conf.get("imageCompressEnable")){
Integer maxWidth = (Integer)conf.get("imageCompressBorder"); Integer maxWidth = (Integer)conf.get("imageCompressBorder");
ImageUtils.thumbnails(new File(physicalPath), maxWidth, -1, null); ImageUtils.thumbnails(new File(physicalPath), maxWidth, -1, null);
} }
} }
// 上传成功后 转换格式 按照新的视频格式 返回前台 ThinkGem // 上传成功后 转换格式 按照新的视频格式 返回前台 ThinkGem
else if(actionCode == ActionMap.UPLOAD_VIDEO){ else if(actionCode == ActionMap.UPLOAD_VIDEO){
final VideoUtils v = new VideoUtils(physicalPath); final VideoUtils v = new VideoUtils(physicalPath);
// 先截图 // 先截图
if (v.cutPic()){ if (v.cutPic()){
// 开启进程,在转换视频文件 // 开启进程,在转换视频文件
Thread thread = new Thread("video-convert") { Thread thread = new Thread("video-convert") {
@@ -134,28 +113,26 @@ public class BinaryUploader {
} }
}; };
thread.setDaemon(true); thread.setDaemon(true);
thread.start(); thread.start();
storageState.putInfo("url", ctx + PathFormat.format(savePath) + "." + v.getOutputFileExtension()); storageState.putInfo("url", ctx + PathFormat.format(savePath) + "." + v.getOutputFileExtension());
storageState.putInfo("type", "." + v.getOutputFileExtension()); storageState.putInfo("type", "." + v.getOutputFileExtension());
storageState.putInfo("original", originFileName +"."+ v.getInputFileExtension()); storageState.putInfo("original", originFileName +"."+ v.getInputFileExtension());
// Ueditor编辑器上传文件完成后调用事件 // Ueditor编辑器上传文件完成后调用事件
StorageManager.uploadFileSuccess(physicalPath, storageState); StorageManager.uploadFileSuccess(physicalPath, storageState);
return storageState; return storageState;
} }
} }
storageState.putInfo("url", ctx + PathFormat.format(savePath)); storageState.putInfo("url", ctx + PathFormat.format(savePath));
storageState.putInfo("type", suffix); storageState.putInfo("type", suffix);
storageState.putInfo("original", originFileName + suffix); storageState.putInfo("original", originFileName + suffix);
// UEditor上传文件成功后调用事件 // UEditor上传文件成功后调用事件
StorageManager.uploadFileSuccess(physicalPath, storageState); StorageManager.uploadFileSuccess(physicalPath, storageState);
} }
return storageState; return storageState;
} catch (FileUploadException e) {
return new BaseState(false, AppInfo.PARSE_REQUEST_ERROR);
} catch (IOException e) { } catch (IOException e) {
return new BaseState(false, AppInfo.IO_ERROR); return new BaseState(false, AppInfo.IO_ERROR);
} }
@@ -166,5 +143,5 @@ public class BinaryUploader {
return list.contains(type); return list.contains(type);
} }
} }