2017-07-03 87 views
0

这是我上传文件代码:无法上传大于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; 
} 

当部署在码头(Java 8)它的工作原理时,文件大小约为较低然后10MB,小文件,如1-2 MB,当文件较大像10MB +上传失败,Restet或Jetty有什么问题?

+0

我读过关于添加:ContextHandler.setMaxFormContentSize(int maxSize);为Jetty,但不知道如何将此配置与Reslet集成或即使它可以工作。 – xybrek

+0

处理上载的servlet的servlet规格多部分配置设置是什么? –

+0

查看以前的答案:https://stackoverflow.com/q/19145489/775715 –

回答

0

在服务器实例上设置一个属性来修改最大内容大小。 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> 
+0

这不能解决问题 – xybrek