mirror of
https://github.com/apache/struts.git
synced 2026-08-05 22:56:59 +00:00
WW-5141 conversion to fileupload2
This commit is contained in:
committed by
Lukasz Lenart
parent
72e1ff74fd
commit
2e0ba0873d
@@ -39,7 +39,7 @@
|
||||
<include>org.apache.commons:commons-text</include>
|
||||
<include>org.apache.logging.log4j:log4j-api</include>
|
||||
<include>ognl:ognl</include>
|
||||
<include>commons-fileupload:commons-fileupload</include>
|
||||
<include>org.apache.commons:commons-fileupload2-jakarta</include>
|
||||
<include>org.apache.commons:commons-io</include>
|
||||
</includes>
|
||||
</dependencySet>
|
||||
|
||||
+4
-4
@@ -91,7 +91,6 @@
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>build-maven</id>
|
||||
@@ -172,6 +171,7 @@
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-source-plugin</artifactId>
|
||||
</plugin>
|
||||
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
@@ -214,14 +214,14 @@
|
||||
|
||||
<!-- File upload -->
|
||||
<dependency>
|
||||
<groupId>commons-fileupload</groupId>
|
||||
<artifactId>commons-fileupload</artifactId>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-fileupload2-jakarta</artifactId>
|
||||
<version>2.0.0-M1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
|
||||
+46
-41
@@ -18,14 +18,15 @@
|
||||
*/
|
||||
package org.apache.struts2.dispatcher.multipart;
|
||||
|
||||
import org.apache.commons.fileupload.FileCountLimitExceededException;
|
||||
import org.apache.commons.fileupload.FileItem;
|
||||
import org.apache.commons.fileupload.FileUploadBase;
|
||||
import org.apache.commons.fileupload.FileUploadException;
|
||||
import org.apache.commons.fileupload.RequestContext;
|
||||
import org.apache.commons.fileupload.disk.DiskFileItem;
|
||||
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
|
||||
import org.apache.commons.fileupload.servlet.ServletFileUpload;
|
||||
import org.apache.commons.fileupload2.core.DiskFileItem;
|
||||
import org.apache.commons.fileupload2.core.DiskFileItemFactory;
|
||||
import org.apache.commons.fileupload2.core.FileItem;
|
||||
import org.apache.commons.fileupload2.core.FileUploadByteCountLimitException;
|
||||
import org.apache.commons.fileupload2.core.FileUploadException;
|
||||
import org.apache.commons.fileupload2.core.FileUploadFileCountLimitException;
|
||||
import org.apache.commons.fileupload2.core.FileUploadSizeException;
|
||||
import org.apache.commons.fileupload2.core.RequestContext;
|
||||
import org.apache.commons.fileupload2.jakarta.JakartaServletFileUpload;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@@ -35,7 +36,7 @@ import jakarta.servlet.http.HttpServletRequest;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Enumeration;
|
||||
@@ -58,7 +59,7 @@ public class JakartaMultiPartRequest extends AbstractMultiPartRequest {
|
||||
protected Map<String, List<String>> params = new HashMap<>();
|
||||
|
||||
/**
|
||||
* Creates a new request wrapper to handle multi-part data using methods adapted from Jason Pell's
|
||||
* Creates a new request wrapper to handle multipart data using methods adapted from Jason Pell's
|
||||
* multipart classes (see class description).
|
||||
*
|
||||
* @param saveDir the directory to save off the file
|
||||
@@ -72,16 +73,16 @@ public class JakartaMultiPartRequest extends AbstractMultiPartRequest {
|
||||
} catch (FileUploadException e) {
|
||||
LOG.debug("Request exceeded size limit!", e);
|
||||
LocalizedMessage errorMessage;
|
||||
if (e instanceof FileUploadBase.SizeLimitExceededException) {
|
||||
FileUploadBase.SizeLimitExceededException ex = (FileUploadBase.SizeLimitExceededException) e;
|
||||
errorMessage = buildErrorMessage(e, new Object[]{ex.getPermittedSize(), ex.getActualSize()});
|
||||
} else if (e instanceof FileUploadBase.FileSizeLimitExceededException) {
|
||||
FileUploadBase.FileSizeLimitExceededException ex = (FileUploadBase.FileSizeLimitExceededException) e;
|
||||
errorMessage = buildErrorMessage(e, new Object[]{ex.getFileName(), ex.getPermittedSize(), ex.getActualSize()});
|
||||
} else if (e instanceof FileCountLimitExceededException) {
|
||||
FileCountLimitExceededException ex = (FileCountLimitExceededException) e;
|
||||
errorMessage = buildErrorMessage(e, new Object[]{ex.getLimit()});
|
||||
} else {
|
||||
if (e instanceof FileUploadByteCountLimitException) {
|
||||
FileUploadByteCountLimitException ex = (FileUploadByteCountLimitException) e;
|
||||
errorMessage = buildErrorMessage(e, new Object[]{ex.getFileName(), ex.getPermitted(), ex.getActualSize()});
|
||||
} else if (e instanceof FileUploadFileCountLimitException) {
|
||||
FileUploadFileCountLimitException ex = (FileUploadFileCountLimitException) e;
|
||||
errorMessage = buildErrorMessage(e, new Object[]{ex.getPermitted()});
|
||||
} else if (e instanceof FileUploadSizeException) {
|
||||
FileUploadSizeException ex = (FileUploadSizeException) e;
|
||||
errorMessage = buildErrorMessage(e, new Object[]{ex.getPermitted(), ex.getActualSize()});
|
||||
} else {
|
||||
errorMessage = buildErrorMessage(e, new Object[]{});
|
||||
}
|
||||
|
||||
@@ -97,10 +98,9 @@ public class JakartaMultiPartRequest extends AbstractMultiPartRequest {
|
||||
}
|
||||
}
|
||||
|
||||
protected void processUpload(HttpServletRequest request, String saveDir) throws FileUploadException, UnsupportedEncodingException {
|
||||
//TODO: commons-upload upgrade
|
||||
protected void processUpload(HttpServletRequest request, String saveDir) throws IOException {
|
||||
|
||||
/* if (ServletFileUpload.isMultipartContent(request)) {
|
||||
if (JakartaServletFileUpload.isMultipartContent(request)) {
|
||||
for (FileItem item : parseRequest(request, saveDir)) {
|
||||
LOG.debug("Found file item: [{}]", sanitizeNewlines(item.getFieldName()));
|
||||
if (item.isFormField()) {
|
||||
@@ -109,7 +109,7 @@ public class JakartaMultiPartRequest extends AbstractMultiPartRequest {
|
||||
processFileField(item);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
protected void processFileField(FileItem item) {
|
||||
@@ -132,9 +132,10 @@ public class JakartaMultiPartRequest extends AbstractMultiPartRequest {
|
||||
files.put(item.getFieldName(), values);
|
||||
}
|
||||
|
||||
protected void processNormalFormField(FileItem item, String charset) throws UnsupportedEncodingException {
|
||||
protected void processNormalFormField(FileItem item, String charset) throws IOException {
|
||||
try {
|
||||
LOG.debug("Item is a normal form field");
|
||||
Charset encoding = Charset.forName(charset);
|
||||
|
||||
List<String> values;
|
||||
if (params.get(item.getFieldName()) != null) {
|
||||
@@ -159,7 +160,7 @@ public class JakartaMultiPartRequest extends AbstractMultiPartRequest {
|
||||
} else if (charset == null) {
|
||||
values.add(item.getString()); // WW-633
|
||||
} else {
|
||||
values.add(item.getString(charset));
|
||||
values.add(item.getString(encoding));
|
||||
}
|
||||
params.put(item.getFieldName(), values);
|
||||
} finally {
|
||||
@@ -169,15 +170,14 @@ public class JakartaMultiPartRequest extends AbstractMultiPartRequest {
|
||||
|
||||
protected List<FileItem> parseRequest(HttpServletRequest servletRequest, String saveDir) throws FileUploadException {
|
||||
DiskFileItemFactory fac = createDiskFileItemFactory(saveDir);
|
||||
ServletFileUpload upload = createServletFileUpload(fac);
|
||||
JakartaServletFileUpload upload = createServletFileUpload(fac);
|
||||
|
||||
|
||||
//TODO: commons-upload upgrade
|
||||
|
||||
return Collections.emptyList(); //upload.parseRequest(createRequestContext(servletRequest));
|
||||
return upload.parseRequest(createRequestContext(servletRequest));
|
||||
}
|
||||
|
||||
protected ServletFileUpload createServletFileUpload(DiskFileItemFactory fac) {
|
||||
ServletFileUpload upload = new ServletFileUpload(fac);
|
||||
protected JakartaServletFileUpload createServletFileUpload(DiskFileItemFactory fac) {
|
||||
JakartaServletFileUpload upload = new JakartaServletFileUpload(fac);
|
||||
if (maxSize != null) {
|
||||
upload.setSizeMax(maxSize);
|
||||
}
|
||||
@@ -191,13 +191,14 @@ public class JakartaMultiPartRequest extends AbstractMultiPartRequest {
|
||||
}
|
||||
|
||||
protected DiskFileItemFactory createDiskFileItemFactory(String saveDir) {
|
||||
DiskFileItemFactory fac = new DiskFileItemFactory();
|
||||
DiskFileItemFactory.Builder fac = DiskFileItemFactory.builder();
|
||||
// Make sure that the data is written to file, even if the file is empty.
|
||||
fac.setSizeThreshold(-1);
|
||||
//setting 0 or -1 no longer seems to work for fileupload buffer size, so using 1 instead.
|
||||
fac.setBufferSize(1);
|
||||
if (saveDir != null) {
|
||||
fac.setRepository(new File(saveDir));
|
||||
fac.setPath(saveDir);
|
||||
}
|
||||
return fac;
|
||||
return fac.get();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
@@ -238,10 +239,10 @@ public class JakartaMultiPartRequest extends AbstractMultiPartRequest {
|
||||
List<UploadedFile> fileList = new ArrayList<>(items.size());
|
||||
for (FileItem fileItem : items) {
|
||||
DiskFileItem diskFileItem = (DiskFileItem) fileItem;
|
||||
File storeLocation = diskFileItem.getStoreLocation();
|
||||
File storeLocation = diskFileItem.getPath().toFile();
|
||||
|
||||
// Ensure file exists even if it is empty.
|
||||
if (diskFileItem.getSize() == 0 && storeLocation != null && !storeLocation.exists()) {
|
||||
if (diskFileItem.getSize() == 0 && !storeLocation.exists()) {
|
||||
try {
|
||||
storeLocation.createNewFile();
|
||||
} catch (IOException e) {
|
||||
@@ -288,7 +289,7 @@ public class JakartaMultiPartRequest extends AbstractMultiPartRequest {
|
||||
|
||||
List<String> fileNames = new ArrayList<>(items.size());
|
||||
for (FileItem fileItem : items) {
|
||||
fileNames.add(((DiskFileItem) fileItem).getStoreLocation().getName());
|
||||
fileNames.add(((DiskFileItem) fileItem).getPath().toFile().getName());
|
||||
}
|
||||
|
||||
return fileNames.toArray(new String[0]);
|
||||
@@ -341,7 +342,7 @@ public class JakartaMultiPartRequest extends AbstractMultiPartRequest {
|
||||
return req.getContentType();
|
||||
}
|
||||
|
||||
public int getContentLength() {
|
||||
public long getContentLength() {
|
||||
return req.getContentLength();
|
||||
}
|
||||
|
||||
@@ -365,7 +366,11 @@ public class JakartaMultiPartRequest extends AbstractMultiPartRequest {
|
||||
for (FileItem item : items) {
|
||||
LOG.debug("Removing file {} {}", name, item);
|
||||
if (!item.isInMemory()) {
|
||||
item.delete();
|
||||
try {
|
||||
item.delete();
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+19
-16
@@ -18,6 +18,10 @@
|
||||
*/
|
||||
package org.apache.struts2.dispatcher.multipart;
|
||||
|
||||
import org.apache.commons.fileupload2.jakarta.JakartaServletFileUpload;
|
||||
import org.apache.commons.fileupload2.core.FileUploadSizeException;
|
||||
import org.apache.commons.fileupload2.core.FileItemInputIterator;
|
||||
import org.apache.commons.fileupload2.core.FileItemInput;
|
||||
import org.apache.commons.fileupload.FileItemIterator;
|
||||
import org.apache.commons.fileupload.FileItemStream;
|
||||
import org.apache.commons.fileupload.FileUploadBase;
|
||||
@@ -209,19 +213,17 @@ public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest {
|
||||
* @param request the servlet request
|
||||
* @param saveDir location of the save dir
|
||||
*/
|
||||
protected void processUpload(HttpServletRequest request, String saveDir) throws IOException, FileUploadException {
|
||||
|
||||
//TODO: commons-upload upgrade
|
||||
protected void processUpload(HttpServletRequest request, String saveDir) throws Exception {
|
||||
|
||||
// Sanity check that the request is a multi-part/form-data request.
|
||||
/*if (ServletFileUpload.isMultipartContent(request)) {
|
||||
if (JakartaServletFileUpload.isMultipartContent(request)) {
|
||||
|
||||
// Sanity check on request size.
|
||||
boolean requestSizePermitted = isRequestSizePermitted(request);
|
||||
|
||||
// Interface with Commons FileUpload API
|
||||
// Using the Streaming API
|
||||
ServletFileUpload servletFileUpload = new ServletFileUpload();
|
||||
JakartaServletFileUpload servletFileUpload = new JakartaServletFileUpload();
|
||||
if (maxSize != null) {
|
||||
servletFileUpload.setSizeMax(maxSize);
|
||||
}
|
||||
@@ -231,12 +233,12 @@ public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest {
|
||||
if (maxFileSize != null) {
|
||||
servletFileUpload.setFileSizeMax(maxFileSize);
|
||||
}
|
||||
FileItemIterator i = servletFileUpload.getItemIterator(request);
|
||||
FileItemInputIterator i = servletFileUpload.getItemIterator(request);
|
||||
|
||||
// Iterate the file items
|
||||
while (i.hasNext()) {
|
||||
try {
|
||||
FileItemStream itemStream = i.next();
|
||||
FileItemInput itemStream = i.next();
|
||||
|
||||
// If the file item stream is a form field, delegate to the
|
||||
// field item stream handler
|
||||
@@ -263,7 +265,7 @@ public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest {
|
||||
LOG.warn("Error occurred during process upload", e);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -299,7 +301,7 @@ public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest {
|
||||
protected void addFileSkippedError(String fileName, HttpServletRequest request) {
|
||||
String exceptionMessage = "Skipped file " + fileName + "; request size limit exceeded.";
|
||||
long allowedMaxSize = maxSize != null ? maxSize : -1;
|
||||
FileSizeLimitExceededException exception = new FileUploadBase.FileSizeLimitExceededException(exceptionMessage, getRequestSize(request), allowedMaxSize);
|
||||
FileUploadSizeException exception = new FileUploadSizeException(exceptionMessage, getRequestSize(request), allowedMaxSize);
|
||||
LocalizedMessage message = buildErrorMessage(exception, new Object[]{fileName, getRequestSize(request), allowedMaxSize});
|
||||
if (!errors.contains(message)) {
|
||||
errors.add(message);
|
||||
@@ -311,11 +313,12 @@ public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest {
|
||||
*
|
||||
* @param itemStream file item stream
|
||||
*/
|
||||
protected void processFileItemStreamAsFormField(FileItemStream itemStream) {
|
||||
protected void processFileItemStreamAsFormField(FileItemInput itemStream) {
|
||||
String fieldName = itemStream.getFieldName();
|
||||
try {
|
||||
List<String> values;
|
||||
String fieldValue = Streams.asString(itemStream.openStream());
|
||||
|
||||
String fieldValue = itemStream.getInputStream().toString();
|
||||
if (!parameters.containsKey(fieldName)) {
|
||||
values = new ArrayList<>();
|
||||
parameters.put(fieldName, values);
|
||||
@@ -334,7 +337,7 @@ public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest {
|
||||
* @param itemStream file item stream
|
||||
* @param location location
|
||||
*/
|
||||
protected void processFileItemStreamAsFileField(FileItemStream itemStream, String location) {
|
||||
protected void processFileItemStreamAsFileField(FileItemInput itemStream, String location) {
|
||||
// Skip file uploads that don't have a file name - meaning that no file was selected.
|
||||
if (itemStream.getName() == null || itemStream.getName().trim().isEmpty()) {
|
||||
LOG.debug("No file has been uploaded for the field: {}", itemStream.getFieldName());
|
||||
@@ -398,10 +401,10 @@ public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest {
|
||||
* @return true if stream was successfully
|
||||
* @throws IOException in case of IO errors
|
||||
*/
|
||||
protected boolean streamFileToDisk(FileItemStream itemStream, File file) throws IOException {
|
||||
protected boolean streamFileToDisk(FileItemInput itemStream, File file) throws IOException {
|
||||
boolean result;
|
||||
try (InputStream input = itemStream.openStream();
|
||||
OutputStream output = new BufferedOutputStream(Files.newOutputStream(file.toPath()), bufferSize)) {
|
||||
try (InputStream input = itemStream.getInputStream();
|
||||
OutputStream output = new BufferedOutputStream(Files.newOutputStream(file.toPath()), bufferSize)) {
|
||||
byte[] buffer = new byte[bufferSize];
|
||||
LOG.debug("Streaming file using buffer size {}.", bufferSize);
|
||||
for (int length; ((length = input.read(buffer)) > 0); ) {
|
||||
@@ -420,7 +423,7 @@ public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest {
|
||||
* @param itemStream file item stream
|
||||
* @param file the file
|
||||
*/
|
||||
protected void createFileInfoFromItemStream(FileItemStream itemStream, File file) {
|
||||
protected void createFileInfoFromItemStream(FileItemInput itemStream, File file) {
|
||||
// gather attributes from file upload stream.
|
||||
String fileName = itemStream.getName();
|
||||
String fieldName = itemStream.getFieldName();
|
||||
|
||||
@@ -31,10 +31,10 @@ struts.messages.error.content.type.not.allowed=Content-Type not allowed: {0} "{1
|
||||
struts.messages.error.file.extension.not.allowed=File extension not allowed: {0} "{1}" "{2}" {3}
|
||||
|
||||
# dedicated messages used to handle various problems with file upload - check {@link JakartaMultiPartRequest#parse(HttpServletRequest, String)}
|
||||
struts.messages.upload.error.SizeLimitExceededException=Request exceeded allowed size limit! Max size allowed is: {0} but request was: {1}!
|
||||
struts.messages.upload.error.FileCountLimitExceededException=Request exceeded allowed number of files! Max allowed files number is: {0}!
|
||||
struts.messages.upload.error.FileSizeLimitExceededException=File in request exceeded allowed file size limit! Max file size allowed is: {1} but file {0} was: {2}!
|
||||
struts.messages.upload.error.IOException=Error uploading: {0}!
|
||||
struts.messages.upload.error.FileUploadSizeException=Request exceeded allowed size limit! Max size allowed is: {0}!
|
||||
struts.messages.upload.error.FileUploadFileCountLimitException=Request exceeded allowed number of files! Max allowed files number is: {0}!
|
||||
struts.messages.upload.error.FileUploadByteCountLimitException=File in request exceeded allowed file size limit! Max file size allowed is: {1}!
|
||||
struts.messages.upload.error.FileUploadException=Error uploading: {0}!
|
||||
|
||||
devmode.notification=Developer Notification (set struts.devMode to false to disable this message):\n{0}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ struts.messages.error.file.too.large=Filen er for stor: {0} "{1}" {2}
|
||||
struts.messages.error.content.type.not.allowed=Content-Type er ikke tilladt: {0} "{1}" {2}
|
||||
|
||||
# dedicated messages used to handle various problems with file upload - check {@link JakartaMultiPartRequest#parse(HttpServletRequest, String)}
|
||||
struts.messages.upload.error.SizeLimitExceededException=Request overskredet tilladte st\u00F8rrelse gr\u00E6nse! Max tilladte st\u00F8rrelse er: {0}, men anmodning var: {1}!
|
||||
struts.messages.upload.error.IOException=Fejl ved upload: {0}!
|
||||
struts.messages.upload.error.FileUploadSizeException=Request overskredet tilladte st\u00F8rrelse gr\u00E6nse! Max tilladte st\u00F8rrelse er: {0}!
|
||||
struts.messages.upload.error.FileUploadException=Fejl ved upload: {0}!
|
||||
|
||||
devmode.notification=Note til udvikler (ret struts.devMode til 'false' for at deaktivere denne meddelse):\n{0}
|
||||
|
||||
@@ -30,8 +30,8 @@ struts.messages.error.content.type.not.allowed=Content-Type nicht erlaubt: {0} "
|
||||
struts.messages.error.file.extension.not.allowed=File extension nicht erlaubt: {0} "{1}" "{2}" {3}
|
||||
|
||||
# dedicated messages used to handle various problems with file upload - check {@link JakartaMultiPartRequest#parse(HttpServletRequest, String)}
|
||||
struts.messages.upload.error.SizeLimitExceededException=Der Request \u00FCbertraf die maximal erlaubte Gr\u00F6\u00DFe und wurde daher abgelehnt. Die maximal zul\u00E4ssige Gr\u00F6\u00DFe ist {0}, die Gr\u00F6\u00DFe der Anfrage betrug aber {1}!
|
||||
struts.messages.upload.error.FileUploadSizeException=Der Request \u00FCbertraf die maximal erlaubte Gr\u00F6\u00DFe und wurde daher abgelehnt. Die maximal zul\u00E4ssige Gr\u00F6\u00DFe ist {0}!
|
||||
|
||||
struts.messages.upload.error.IOException=Fehler beim Upload: {0}!
|
||||
struts.messages.upload.error.FileUploadException=Fehler beim Upload: {0}!
|
||||
|
||||
devmode.notification=Entwickler Hinweis (Setzen Sie struts.devMode auf false um diese Nachricht zu deaktivieren):\n{0}
|
||||
|
||||
@@ -49,18 +49,8 @@ struts.messages.error.content.type.not.allowed=Content-Type not allowed: {0} "{1
|
||||
struts.messages.error.file.extension.not.allowed=File extension not allowed: {0} "{1}" "{2}" {3}
|
||||
|
||||
# dedicated messages used to handle various problems with file upload - check {@link JakartaMultiPartRequest#parse(HttpServletRequest, String)}
|
||||
# params depend on exception being handled
|
||||
# FileUploadBase.SizeLimitExceededException:
|
||||
# 0 - permitted size
|
||||
# 1 - actual size
|
||||
# FileUploadBase.FileSizeLimitExceededException
|
||||
# 0 - file name
|
||||
# 1 - permitted size
|
||||
# 2 - actual size
|
||||
# FileCountLimitExceededException
|
||||
# 0 - limit
|
||||
struts.messages.upload.error.SizeLimitExceededException=Request exceeded allowed size limit! Max size allowed is: {0} but request was: {1}!
|
||||
struts.messages.upload.error.IOException=Error uploading: {0}!
|
||||
struts.messages.upload.error.FileUploadSizeException=Request exceeded allowed size limit! Max size allowed is: {0}!
|
||||
struts.messages.upload.error.FileUploadException=Error uploading: {0}!
|
||||
|
||||
devmode.notification=Developer Notification (set struts.devMode to false to disable this message):\n{0}
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ struts.messages.error.content.type.not.allowed=Niedozwolony Content-Type: {0} "{
|
||||
struts.messages.error.file.extension.not.allowed=Niedozwolony File extension: {0} "{1}" "{2}" {3}
|
||||
|
||||
# dedicated messages used to handle various problems with file upload - check {@link JakartaMultiPartRequest#parse(HttpServletRequest, String)}
|
||||
struts.messages.upload.error.SizeLimitExceededException=Zapytanie przekroczy\u0142o dozwolony limit rozmiaru! Maksymalny rozmiar to: {0} ale \u017C\u0105danie mia\u0142o: {1}!
|
||||
struts.messages.upload.error.IOException=B\u0142\u0105d podczas wysy\u0142ania pliku: {0}!
|
||||
struts.messages.upload.error.FileUploadSizeException=Zapytanie przekroczy\u0142o dozwolony limit rozmiaru! Maksymalny rozmiar to: {0}!
|
||||
struts.messages.upload.error.FileUploadException=B\u0142\u0105d podczas wysy\u0142ania pliku: {0}!
|
||||
|
||||
devmode.notification=Powiadmienie Developera (ustaw struts.devMode na false by wy\u0142\u0105czy\u0107 t\u0119 wiadomo\u015B\u0107):\n{0}
|
||||
|
||||
@@ -29,7 +29,7 @@ struts.messages.error.file.too.large=Arquivo muito grande: {0} "{1}" {2}
|
||||
struts.messages.error.content.type.not.allowed=Content-Type n\u00E3o permitido: {0} "{1}" {2}
|
||||
|
||||
# dedicated messages used to handle various problems with file upload - check {@link JakartaMultiPartRequest#parse(HttpServletRequest, String)}
|
||||
struts.messages.upload.error.SizeLimitExceededException=Pedido excedeu o limite de tamanho permitido! Tamanho m\u00E1ximo permitido \u00E9: {0} mas foi pedido: {1}!
|
||||
struts.messages.upload.error.IOException=Erro de uploading: {0}!
|
||||
struts.messages.upload.error.FileUploadSizeException=Pedido excedeu o limite de tamanho permitido! Tamanho m\u00E1ximo permitido \u00E9: {0}!
|
||||
struts.messages.upload.error.FileUploadException=Erro de uploading: {0}!
|
||||
|
||||
devmode.notification=Notifica\u00E7\u00E3o para o Desenvolvedor (altere o param\u00EAtro struts.devMode para false para desabilitar esta mensagem):\n{0}
|
||||
|
||||
+1
-3
@@ -27,14 +27,12 @@ import java.nio.file.Paths;
|
||||
import org.apache.struts2.dispatcher.LocalizedMessage;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.mock.web.DelegatingServletInputStream;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
|
||||
@Ignore
|
||||
public class JakartaStreamMultiPartRequestTest {
|
||||
|
||||
private JakartaStreamMultiPartRequest multiPart;
|
||||
@@ -68,6 +66,6 @@ public class JakartaStreamMultiPartRequestTest {
|
||||
multiPart.setMaxSize("4");
|
||||
multiPart.parse(request, tempDir.toString());
|
||||
LocalizedMessage next = multiPart.getErrors().iterator().next();
|
||||
Assert.assertEquals(next.getTextKey(), "struts.messages.upload.error.SizeLimitExceededException");
|
||||
Assert.assertEquals(next.getTextKey(), "struts.messages.upload.error.FileUploadSizeException");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.commons.fileupload2.jakarta.JakartaServletFileUpload;
|
||||
import org.apache.struts2.ServletActionContext;
|
||||
import org.apache.struts2.StrutsInternalTestCase;
|
||||
import org.apache.struts2.TestAction;
|
||||
@@ -54,7 +55,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
/**
|
||||
* Test case for FileUploadInterceptor.
|
||||
*/
|
||||
@Ignore
|
||||
|
||||
public class FileUploadInterceptorTest extends StrutsInternalTestCase {
|
||||
|
||||
public static final UploadedFile EMPTY_FILE = new UploadedFile() {
|
||||
@@ -354,8 +355,7 @@ public class FileUploadInterceptorTest extends StrutsInternalTestCase {
|
||||
endline;
|
||||
req.setContent(content.getBytes());
|
||||
|
||||
fail("TODO");
|
||||
//assertTrue(ServletFileUpload.isMultipartContent(req));
|
||||
assertTrue(JakartaServletFileUpload.isMultipartContent(req));
|
||||
|
||||
MyFileupAction action = new MyFileupAction();
|
||||
container.inject(action);
|
||||
@@ -407,8 +407,7 @@ public class FileUploadInterceptorTest extends StrutsInternalTestCase {
|
||||
endline;
|
||||
req.setContent(content.getBytes());
|
||||
|
||||
fail("TODO");
|
||||
//assertTrue(ServletFileUpload.isMultipartContent(req));
|
||||
assertTrue(JakartaServletFileUpload.isMultipartContent(req));
|
||||
|
||||
MyFileupAction action = new MyFileupAction();
|
||||
container.inject(action);
|
||||
@@ -464,7 +463,7 @@ public class FileUploadInterceptorTest extends StrutsInternalTestCase {
|
||||
assertEquals(1, errors.size());
|
||||
String msg = errors.iterator().next();
|
||||
assertEquals(
|
||||
"File in request exceeded allowed file size limit! Max file size allowed is: 10 but file deleteme.txt was: 34!",
|
||||
"File in request exceeded allowed file size limit! Max file size allowed is: 10!",
|
||||
msg);
|
||||
}
|
||||
|
||||
|
||||
@@ -836,9 +836,9 @@
|
||||
<version>4.4</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-fileupload</groupId>
|
||||
<artifactId>commons-fileupload</artifactId>
|
||||
<version>1.5</version>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-fileupload2-jakarta</artifactId>
|
||||
<version>2.0.0-M1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-io</groupId>
|
||||
|
||||
Reference in New Issue
Block a user