@FormDataParam
là nghĩa vụ phải được sử dụng với kiểu dữ liệu dung nhiều (ví dụ multipart/form-data
hoặc MediaType.MULTIPART_FORM_DATA
), mà dưới dạng thô trông giống như
Content-Type: multipart/form-data; boundary=AaB03x
--AaB03x
Content-Disposition: form-data; name="submit-name"
Larry
--AaB03x
Content-Disposition: form-data; name="files"; filename="file1.txt"
Content-Type: text/plain
... contents of file1.txt ...
--AaB03x--
Multipart được sử dụng chủ yếu cho việc gửi dữ liệu nhị phân, giống như không -text tập tin.
@FormParam
là cho thông số yêu cầu url-mã hóa (ví dụ: application/x-www-form-urlencoded
hoặc MediaType.APPLICATION_FORM_URLENCODED
), mà ở dạng thô trông giống như
param1=value1¶m2=value2
Cả hai loại được sử dụng chủ yếu trong các hình thức phía khách hàng. Ví dụ:
<form method="POST" action="someUrl">
<input name="gender" type="text">
<input name="name" type="text">
</form>
ở trên sẽ gửi thông số yêu cầu là application/x-www-form-urlencoded
. Nó sẽ được gửi ở dạng thô như
gender=male&name=peeskillet
Về phía server, chúng ta có thể sử dụng một @FormParam
cho mỗi tham số được đặt tên theo hình thức
@FormParam("gender") String gender, @FormParam("name") String name
Nhưng nếu chúng ta cần phải gửi nói hình ảnh bên dưới các tham số, application/x-form-url-encoded
loại dữ liệu không đủ, vì nó chỉ đề cập đến văn bản ASCII. Vì vậy, chúng ta cần phải sử dụng Multipart
<form method="POST" action="someUrl", enctype="multipart/form-data">
<input name="gender" type="text">
<input name="name" type="text">
<input name="avatar" type="file">
</form>
Đây là loại Multipart được chỉ định, bây giờ là trình duyệt sẽ gửi yêu cầu với một cái gì đó giống như
Content-Type: multipart/form-data; boundary=AaB03x
--AaB03x
Content-Disposition: form-data; name="gender"
Male
--AaB03x
Content-Disposition: form-data; name="name"
Peskillet
--AaB03x
Content-Disposition: form-data; name="avatar"; filename="image.png"
Content-Type: image/png
... binary content of image file ...
--AaB03x--
Trên máy chủ, tương tự với ví dụ application/x-www-form-urlencoded
trên, cho mỗi tham số Multipart (hoặc lĩnh vực được chính xác hơn), chúng ta có thể sử dụng để biểu thị @FormDataParam
mỗi tham số
@FormDataParam("gender") String gender,
@FormDataParam("name") String name,
@FormDataParam("avatar") InputStream avatar
Xem thêm:
FormDataParam được sử dụng kết hợp với multipart/form-data. Đây là phương pháp hiệu quả hơn để truyền dữ liệu nhị phân như tệp đính kèm hơn là sử dụng FormParam. Xin vui lòng các tài liệu của [FormDataParam] (https://jersey.java.net/nonav/apidocs/1.0.3/contribs/jersey-multipart/com/sun/jersey/multipart/FormDataParam.html) –