Migrate to Apache file upload API 2 w/ Jakarta
This commit is contained in:
parent
3dbcd792a6
commit
90e45c9115
3 changed files with 25 additions and 15 deletions
|
@ -60,7 +60,8 @@ configurations {
|
|||
dependencies {
|
||||
implementation 'com.google.code.gson:gson:2.10.1'
|
||||
implementation 'commons-codec:commons-codec:1.17.0'
|
||||
implementation 'commons-fileupload:commons-fileupload:1.5'
|
||||
implementation 'org.apache.commons:commons-fileupload2-core:2.0.0-M2'
|
||||
implementation 'org.apache.commons:commons-fileupload2-jakarta:2.0.0-M1'
|
||||
implementation 'commons-logging:commons-logging:1.3.2'
|
||||
implementation 'commons-net:commons-net:3.10.0'
|
||||
implementation 'com.sun.mail:javax.mail:1.6.2'
|
||||
|
|
|
@ -24,18 +24,27 @@ import helma.framework.core.Application;
|
|||
import helma.util.*;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.charset.UnsupportedCharsetException;
|
||||
|
||||
import java.security.SecureRandom;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.*;
|
||||
|
||||
import jakarta.servlet.*;
|
||||
import jakarta.servlet.http.*;
|
||||
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
|
||||
import org.apache.commons.fileupload.*;
|
||||
import org.apache.commons.fileupload.servlet.ServletFileUpload;
|
||||
import org.apache.commons.fileupload.servlet.ServletRequestContext;
|
||||
|
||||
import org.apache.commons.fileupload2.core.DiskFileItemFactory;
|
||||
import org.apache.commons.fileupload2.core.FileItem;
|
||||
import org.apache.commons.fileupload2.core.FileUploadException;
|
||||
import org.apache.commons.fileupload2.core.FileUploadSizeException;
|
||||
import org.apache.commons.fileupload2.core.ProgressListener;
|
||||
|
||||
import org.apache.commons.fileupload2.jakarta.JakartaServletDiskFileUpload;
|
||||
import org.apache.commons.fileupload2.jakarta.JakartaServletFileUpload;
|
||||
import org.apache.commons.fileupload2.jakarta.JakartaServletRequestContext;
|
||||
|
||||
/**
|
||||
* This is an abstract Hop servlet adapter. This class communicates with hop applications
|
||||
|
@ -222,7 +231,7 @@ public abstract class AbstractServletClient extends HttpServlet {
|
|||
List uploads = null;
|
||||
JakartaServletRequestContext reqcx = new JakartaServletRequestContext(request);
|
||||
|
||||
if (ServletFileUpload.isMultipartContent(reqcx)) {
|
||||
if (JakartaServletFileUpload.isMultipartContent(reqcx)) {
|
||||
// get session for upload progress monitoring
|
||||
UploadStatus uploadStatus = getApplication().getUploadStatus(reqtrans);
|
||||
try {
|
||||
|
@ -230,7 +239,7 @@ public abstract class AbstractServletClient extends HttpServlet {
|
|||
} catch (Exception upx) {
|
||||
log("Error in file upload", upx);
|
||||
String message;
|
||||
boolean tooLarge = (upx instanceof FileUploadBase.SizeLimitExceededException);
|
||||
boolean tooLarge = (upx instanceof FileUploadSizeException);
|
||||
if (tooLarge) {
|
||||
message = "File upload size exceeds limit of " + uploadLimit + " kB";
|
||||
} else {
|
||||
|
@ -657,10 +666,10 @@ public abstract class AbstractServletClient extends HttpServlet {
|
|||
|
||||
protected List parseUploads(JakartaServletRequestContext reqcx, RequestTrans reqtrans,
|
||||
final UploadStatus uploadStatus, String encoding)
|
||||
throws FileUploadException, UnsupportedEncodingException {
|
||||
throws FileUploadException, UnsupportedCharsetException, IOException {
|
||||
// handle file upload
|
||||
DiskFileItemFactory factory = new DiskFileItemFactory();
|
||||
FileUpload upload = new FileUpload(factory);
|
||||
DiskFileItemFactory factory = DiskFileItemFactory.builder().get();
|
||||
JakartaServletFileUpload upload = new JakartaServletFileUpload(factory);
|
||||
// use upload limit for individual file size, but also set a limit on overall size
|
||||
upload.setFileSizeMax(uploadLimit * 1024);
|
||||
upload.setSizeMax(totalUploadLimit * 1024);
|
||||
|
@ -683,7 +692,7 @@ public abstract class AbstractServletClient extends HttpServlet {
|
|||
Object value;
|
||||
// check if this is an ordinary HTML form element or a file upload
|
||||
if (item.isFormField()) {
|
||||
value = item.getString(encoding);
|
||||
value = item.getString(Charset.forName(encoding));
|
||||
} else {
|
||||
value = new MimePart(item);
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
package helma.util;
|
||||
|
||||
import org.apache.commons.fileupload.FileItem;
|
||||
import org.apache.commons.fileupload2.core.FileItem;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.Date;
|
||||
|
@ -238,7 +238,7 @@ public class MimePart implements Serializable {
|
|||
file = new File(base, filename);
|
||||
|
||||
if (fileItem != null) {
|
||||
fileItem.write(file);
|
||||
fileItem.write(file.toPath());
|
||||
// null out fileItem, since calling write() may have moved the temp file
|
||||
fileItem = null;
|
||||
} else {
|
||||
|
@ -249,7 +249,7 @@ public class MimePart implements Serializable {
|
|||
// return file name
|
||||
return filename;
|
||||
} catch (Exception x) {
|
||||
System.err.println("Error in MimePart.writeToFile(): " + x);
|
||||
System.err.println("Error in MimePart.writeToFile(): " + x);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue