From 81634a4ee4774e79b0fa9e1f532b8db3a5d5839b Mon Sep 17 00:00:00 2001 From: thinkgem Date: Tue, 16 Nov 2021 10:17:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=BB=E6=8E=89=20apache=20fileupload=20?= =?UTF-8?q?=E7=9A=84=E4=BE=9D=E8=B5=96=EF=BC=8C=E5=8F=8A=E5=85=B6=E4=BB=96?= =?UTF-8?q?=E4=B8=8D=E5=B8=B8=E7=94=A8=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/pom.xml | 46 ++---------- .../common/ueditor/upload/BinaryUploader.java | 75 +++++++------------ 2 files changed, 31 insertions(+), 90 deletions(-) diff --git a/common/pom.xml b/common/pom.xml index b6bf8266..44a01379 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -28,6 +28,11 @@ org.apache.commons commons-lang3 + + org.apache.commons + commons-text + ${commons-text.version} + commons-codec commons-codec @@ -37,28 +42,11 @@ commons-io ${commons-io.version} - - commons-fileupload - commons-fileupload - ${commons-fileupload.version} - commons-beanutils commons-beanutils ${commons-beanutils.version} - - org.apache.commons - commons-text - ${commons-text.version} - - - @@ -88,23 +76,6 @@ ${fastjson.version} - - - - jaxen @@ -123,13 +94,6 @@ httpclient - - org.apache.commons diff --git a/common/src/main/java/com/jeesite/common/ueditor/upload/BinaryUploader.java b/common/src/main/java/com/jeesite/common/ueditor/upload/BinaryUploader.java index f1bb0790..0a890671 100644 --- a/common/src/main/java/com/jeesite/common/ueditor/upload/BinaryUploader.java +++ b/common/src/main/java/com/jeesite/common/ueditor/upload/BinaryUploader.java @@ -10,15 +10,9 @@ import java.util.Map; 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.MultipartHttpServletRequest; -import com.jeesite.common.codec.EncodeUtils; import com.jeesite.common.image.ImageUtils; import com.jeesite.common.io.FileUtils; import com.jeesite.common.media.VideoUtils; @@ -33,54 +27,32 @@ public class BinaryUploader { public static final State save(HttpServletRequest request, Map conf) { - FileItemStream fileStream = null; // 原始上传 - MultipartFile fileStream2 = null; // Spring MVC 上传 - boolean isAjaxUpload = request.getHeader("X-Requested-With") != null; - - if (!ServletFileUpload.isMultipartContent(request)) { + + String contentType = request.getContentType(); + if (!("POST".equals(request.getMethod()) && contentType != null + && contentType.startsWith("multipart/"))) { return new BaseState(false, AppInfo.NOT_MULTIPART_CONTENT); } - ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory()); - - if ( isAjaxUpload ) { - upload.setHeaderEncoding( EncodeUtils.UTF_8 ); - } - try { - FileItemIterator iterator = upload.getItemIterator(request); - - while (iterator.hasNext()) { - fileStream = iterator.next(); - - if (!fileStream.isFormField()) { + MultipartFile file = null; + if (request instanceof MultipartHttpServletRequest){ + MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; + Iterator it = multiRequest.getFileNames(); + while (it.hasNext()) { + MultipartFile f = multiRequest.getFile(it.next()); + if (f != null && !f.isEmpty() && f.getOriginalFilename() != null) { + file = f; + } break; } - fileStream = null; } - - if (fileStream == null) { - // 原始上传无文件,则检查是否是Spring MVC上传 ThinkGem - MultipartFile file = null; - if (request instanceof MultipartHttpServletRequest){ - MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; - Iterator 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) { + if (file == null) { return new BaseState(false, AppInfo.NOTFOUND_UPLOAD_DATA); } String savePath = (String) conf.get("savePath"); - String originFileName = fileStream != null ? fileStream.getName() : fileStream2.getOriginalFilename(); + String originFileName = file.getOriginalFilename(); String suffix = FileType.getSuffixByFilename(originFileName); originFileName = originFileName.substring(0, @@ -97,11 +69,18 @@ public class BinaryUploader { String physicalPath = FileUtils.path((String) conf.get("rootPath") + savePath); - InputStream is = fileStream != null ? fileStream.openStream() : fileStream2.getInputStream(); - State storageState = StorageManager.saveFileByInputStream(is, physicalPath, maxSize); - is.close(); + InputStream is = null; + State storageState = null; + 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(); String ctx = request.getContextPath(); // ThinkGem 修正上传图片后返回无contextpath问题 @@ -154,8 +133,6 @@ public class BinaryUploader { } return storageState; - } catch (FileUploadException e) { - return new BaseState(false, AppInfo.PARSE_REQUEST_ERROR); } catch (IOException e) { return new BaseState(false, AppInfo.IO_ERROR); }