目前我正在使用org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput進行文件上傳。我想用一些通用的Java EE設計來替換它。請使用Java EE 7規範建議可能的方式來上傳文件以及少數其他表單數據。如何使用Java EE 7規範實現文件上傳以及一些表單數據?
回答
Java EE 7專注於RESTful Web服務。所以要做相應規範的方法,繼續使用JAX-RS 2.0 API:
在這裏,您想要將文件上傳到您的應用程序=>您想將文件發佈到JAX-RS服務。您的方法可以是這樣的:
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail) {
//Your local disk path where you want to store the file
String uploadedFileLocation = "D://uploadedFiles/" + fileDetail.getFileName();
System.out.println(uploadedFileLocation);
// save it
File objFile=new File(uploadedFileLocation);
if(objFile.exists())
{
objFile.delete();
}
try {
OutputStream out = null;
int read = 0;
byte[] bytes = new byte[1024];
out = new FileOutputStream(new File(uploadedFileLocation));
while ((read = uploadedInputStream.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
String output = "File uploaded via JAX-RS based RESTFul Webservice to: " + uploadedFileLocation;
return Response.status(200).entity(output).build();
}
這是符合Java EE 7的上傳文件JAX-RS服務。
@ FormDataParam在jersey-multipart-api中可用,因此是第三方實現,我希望使用javax.ws api來實現基於JAX-RS的實現。是否有兼容resteasy和球衣的通用規格? –
Jersey框架是JAX-RS參考實現。 Resteasy是JAX-RS的另一個實現。 Resteasy沒有以不同的方式處理MultiPartData:http://docs.jboss.org/resteasy/docs/2.3.4.Final/userguide/html/Multipart.html#MultipartFormData 如果您想在Jersey之間執行「便攜」代碼&Resteasy,我認爲這是不可能的。 –
@JsonBourne這正是我想要的,我想要一個獨立於實現者的代碼,應該與RestEasy和Jersey一起運行的代碼。便攜式代碼,正如您正確指出的那樣。 –
- 1. Java EE - 誰實現了規範?
- 2. 如何使用Java EE 7 WebSocket實現推送到客戶端?
- 3. 上傳HttpPostedFileBase以及一些參數
- 4. Java如何找到規範實現?
- 5. 什麼是「Java EE 7 API庫」和「Java EE Web 7 API庫」以及何時使用它們?
- 6. 使用Java EE實時流音頻7
- 7. 傳遞參數以及多部分/表單數據上傳表單(Java Http Post上傳)
- 8. Java EE - 搜索web.xml通用規範
- 9. 如何使用表單驗證與文件上傳,以確保文件上傳
- 10. 如何根據JAX-WS規範發現Web服務實現類?
- 11. 哪些Web服務規範(WS- *)實際上有意義實現?
- 12. 通過ajax上傳文件以及表單數據的其餘部分
- 13. Java EE和Servlets以及JSP
- 14. 如何在java和Java EE中使用多個實例讀取單個文件
- 15. 如何使用Java EE servlet的某些配置文件?
- 16. jQuery:文件+數據上傳使用Blueimp文件上傳插件表單提交
- 17. 如何使用Java實現SAML sso,Java EE
- 18. Java-EE 7 Json規格 - 讀/寫功能?
- 19. HTML表單只上傳某些文件
- 20. JAR清單文件 - 規範與實現之間的區別
- 21. 如何在Java EE中實現登錄?
- 22. Java EE規範和多線程
- 23. 使用Java EE
- 24. Java CopyOnWriteArrayList實現是否有改進的替代方案,以及如何請求對Java規範進行更改?
- 25. 文件上傳 - MultipartResolver實現
- 26. 使用Sequelize.js協會,實現數據庫規範化
- 27. 如何使用Java套接字實現文件傳輸?
- 28. 在plist文件上實現2個ATS規範
- 29. 如何使用本地GWT(Java)實現上下文菜單?
- 30. java類中的規範和實現?
我傾向於用自己的普通Servlet來處理文件上傳。 servlet 3.0規範(自JEE6以來)已經添加了多方面的處理支持。這在問題的範圍內,還是必須是基於JAX-RS的? – Gimby
我們試圖做的是,我們試圖從請求中獲取文件信息,而不使用任何第三方API。你的代碼/實現是否這樣做?如果是的話,你能分享一下你的代碼/想法嗎? –
我認爲是的。 – Gimby