我正在发送包含 zip 文件以及来自 angular 2 的其他一些参数的表单数据,但是在 Java 后端我发现难以使用

问题描述 投票:0回答:2

我得到的错误是 415 Unsupported media type.

我正在发送带有 zip 文件的表单数据以及其他一些参数。 在 angular2 中,我将内容类型设置为 multipart/form-data。

在 Java 后端也作为多部分/表单数据使用。 我正在使用 javax.ws.rs api。 我试过的方法。 使用@FormParam 无效 使用 FileInputStream 无效

我不能使用 FormDataParam 因为我没有使用球衣。我需要在 jax-ws-rs 中替换 FormDataParam。

java angular rest jax-rs jax-ws
2个回答
0
投票

尝试@Consumes(MediaType.APPLICATION_OCTET_STREAM)


0
投票

在后端,您会收到一个 MultipartFile。在 Java Spring 中,它必须如下所示:

@PostMapping
public ResponseEntity<?> postData(@RequestParam("file") MultipartFile file, @RequestParam("agencyId") Long agencyId) {
 // your Business-Code here
}

在前端,您可以将文件和其他参数作为 Formdata 推送,如下所示。该示例使用 String-Value 和名为“file”的 zip 文件,两者都在 FormData 中:

// Popup for fileupload
let inputElement = document.createElement("input");
inputElement.type = 'file';
inputElement.accept = 'zip';

// get file, chosen by user in popup
let files = fileChosenEvent.target as HTMLInputElement;

// create FormData
const formData = new FormData();
formData.append('agencyId', agencyId.toString())
formData.append('file', new Blob([files.files[0]], { type: application/octet-stream" }), file.name);
© www.soinside.com 2019 - 2024. All rights reserved.