我在Jersey上編寫了一個應用程序,用於處理簡單文件上傳。這在球衣1.2上效果很好。在後來的版本(當前爲1.7)中引入@FormDataParam來處理多部分/表單輸入。我使用jersey-multipart和mimepull依賴。看來,這樣做的新方法是在appengine中創建臨時文件,我們都知道這是非法的...使用jersey-1.7在Google Appengine上多文件上傳
我錯過了什麼或做錯了什麼,因爲澤西現在應該與AppEngine兼容?
@POST
@Path("upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public void upload(@FormDataParam("file") InputStream in) { .... }
以上時,這些異常稱爲就會失敗......
/upload
java.lang.SecurityException: Unable to create temporary file
at java.io.File.checkAndCreate(File.java:1778)
at java.io.File.createTempFile(File.java:1870)
at java.io.File.createTempFile(File.java:1907)
at org.jvnet.mimepull.MemoryData.createNext(MemoryData.java:87)
at org.jvnet.mimepull.Chunk.createNext(Chunk.java:59)
at org.jvnet.mimepull.DataHead.addBody(DataHead.java:82)
at org.jvnet.mimepull.MIMEPart.addBody(MIMEPart.java:192)
at org.jvnet.mimepull.MIMEMessage.makeProgress(MIMEMessage.java:235)
at org.jvnet.mimepull.MIMEMessage.parseAll(MIMEMessage.java:176)
at org.jvnet.mimepull.MIMEMessage.getAttachments(MIMEMessage.java:101)
at com.sun.jersey.multipart.impl.MultiPartReaderClientSide.readMultiPart(MultiPartReaderClientSide.java:177)
at com.sun.jersey.multipart.impl.MultiPartReaderServerSide.readMultiPart(MultiPartReaderServerSide.java:80)
at com.sun.jersey.multipart.impl.MultiPartReaderClientSide.readFrom(MultiPartReaderClientSide.java:139)
at com.sun.jersey.multipart.impl.MultiPartReaderClientSide.readFrom(MultiPartReaderClientSide.java:77)
at com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:474)
at com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:538)
任何有線索?有沒有辦法做到這一點,同時防止mimepull創建臨時文件?
任何想法如何以編程方式做到這一點? – gk5885 2012-09-28 00:16:44
@ gk5885通過「編程」你是指沒有Jersey/JAX-RS? – 2012-09-28 13:43:03
我的意思是如何在代碼中設置bufferThrehold而不是通過屬性文件。 – gk5885 2012-10-06 17:01:25