【发布时间】:2017-07-03 09:11:10
【问题描述】:
这是我上传文件的代码:
@Override
public Representation post(Representation entity) {
try {
if (entity != null) {
if (MediaType.MULTIPART_FORM_DATA.equals(entity.getMediaType(), true)) {
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(100000000);
RestletFileUpload upload = new RestletFileUpload(factory);
FileItemIterator fileIterator = upload.getItemIterator(entity);
while (fileIterator.hasNext()) {
FileItemStream item = fileIterator.next();
String name = item.getName();
byte[] byteContent = ByteStreams.toByteArray(item.openStream());
if(byteContent != null) {
String result = doSomethingWith(byteContent);
Representation response = new StringRepresentation(result);
response.setMediaType(MediaType.APPLICATION_JSON);
return response;
}
}
} else {
return badRequest();
}
} else {
return badRequest();
}
} catch (Exception e) {
return internalError();
}
return null;
}
当部署在 Jetty (Java 8) 中时,它可以在文件大小大约低于 10MB,小文件(如 1-2 MB)时工作,当文件大(如 10MB+)时,上传随机失败,Reset 或码头?
【问题讨论】:
-
我读过关于添加:ContextHandler.setMaxFormContentSize(int maxSize);对于 Jetty,但不确定如何将此配置与 Reslet 集成,或者即使它有效。
-
处理上传的 servlet 的 servlet 规范多部分配置设置是什么?