无法上传大于 10MB 的文件?
Unable to upload file larger than 10MB?
这是我上传文件的代码:
@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+ 时上传随机失败,什么Restet 或 Jetty 可能有问题?
在服务器实例上设置一个属性以修改最大内容大小。 Jetty 限制数据量以阻止 DOS 攻击。您可以使用以下配置更改表单上传大小权限。 Link to documentation
<configure class="org.eclipse.jetty.server.Server">
<Call name="setAttribute">
<Arg>org.eclipse.jetty.server.Request.maxFormContentSize</Arg>
<Arg>200000</Arg>
</Call>
</configure>
此问题的修复是更新 Jetty 前面的 NGINX 服务器的最大负载大小。
这是我上传文件的代码:
@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+ 时上传随机失败,什么Restet 或 Jetty 可能有问题?
在服务器实例上设置一个属性以修改最大内容大小。 Jetty 限制数据量以阻止 DOS 攻击。您可以使用以下配置更改表单上传大小权限。 Link to documentation
<configure class="org.eclipse.jetty.server.Server">
<Call name="setAttribute">
<Arg>org.eclipse.jetty.server.Request.maxFormContentSize</Arg>
<Arg>200000</Arg>
</Call>
</configure>
此问题的修复是更新 Jetty 前面的 NGINX 服务器的最大负载大小。