首頁 > Java > java教程 > 如何在 Jersey RESTful Web 服務中上傳附加 JSON 資料的檔案?

如何在 Jersey RESTful Web 服務中上傳附加 JSON 資料的檔案?

DDD
發布: 2024-12-03 07:34:09
原創
494 人瀏覽過

How to Upload Files with Additional JSON Data in a Jersey RESTful Web Service?

Jersey RESTful Web 服務中的附加資料檔案上傳

要在單一REST 呼叫中實作檔案上傳uploadFileWithData方法如下:

@POST
@Path("/upload2")
@Consumes({MediaType.MULTIPART_FORM_DATA, MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response uploadFileWithData(
        @FormDataParam("file") InputStream fileInputStream,
        @FormDataParam("file") FormDataContentDisposition contentDispositionHeader,
        @FormDataParam("emp") String employeeJson) {

    // Deserialize the employee data from JSON
    JacksonJsonProvider provider = new JacksonJsonProvider();
    Employee emp = provider.readFrom(Employee.class, employeeJson);

    // ...business logic...
}
登入後複製

Key要點:

  • 不要使用Employee 對象,而是以原始JSON 字串(String employeeJson)的形式接收員工數據。
  • 使用 Jackson 的 JacksonJsonProvider 將 JSON 字串反序列化為Employee 物件。
  • 確保提供者已在您的JAX-RS 中註冊

Postman 故障排除:

Postman 可能不會自動為各個身體部位設定Content-Types。若要解決此問題:

  1. 在 Postman 編輯器中開啟請求正文。
  2. 右鍵點選「emp」部分,然後選擇「編輯」或「新增標頭」。
  3. 將 Content-Type 設定為 application/json。

替代解決方案:

或者,您可以在REST 方法中明確設定Content-Type:

@POST
@Path("/upload2")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFileAndJSON(
        @FormDataParam("emp") FormDataBodyPart jsonPart,
        @FormDataParam("file") FormDataBodyPart bodyPart) {

    jsonPart.setMediaType(MediaType.APPLICATION_JSON_TYPE);
    Employee emp = jsonPart.getValueAs(Employee.class);

    // ...business logic...
}
登入後複製

注意:

如果您使用的連接器與HttpUrlConnection 不同,您可能會遇到相關評論中討論的問題。

以上是如何在 Jersey RESTful Web 服務中上傳附加 JSON 資料的檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板