@FormDataParam
应该用于Multipart类型数据(即multipart/form-data
或MediaType.MULTIPART_FORM_DATA
),其原始格式类似于
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主要用于发送二进制数据,例如非文本文件。
@FormParam
用于url编码的请求参数(即application/x-www-form-urlenpred
或MediaType.APPLICATION_FORM_URLENCODED
),其原始格式如下param1=value1¶m2=value2
这两种类型都主要用于客户端形式。例如
<form method="POST" action="someUrl"> <input name="gender" type="text"> <input name="name" type="text"></form>
以上将发送请求参数为
application/x-www-form-urlenpred。它会以原始形式发送
gender=male&name=peeskillet
在服务器端,我们可以
@FormParam为表单中的每个命名参数使用
@FormParam("gender") String gender, @FormParam("name") String name但是,如果我们需要将图像与参数一起发送,则
application/x-form-url-enpred数据类型是不够的,因为它仅处理文本。所以我们需要使用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>
在这里指定了Multipart类型,现在浏览器将发出类似以下内容的请求
Content-Type: multipart/form-data; boundary=AaB03x--AaB03xContent-Disposition: form-data; name="gender"Male--AaB03xContent-Disposition: form-data; name="name"Peskillet--AaB03xContent-Disposition: form-data; name="avatar"; filename="image.png"Content-Type: image/png... binary content of image file ...--AaB03x--
在服务器上,类似于
application/x-www-form-urlenpred上面的示例,对于每个Multipart参数(或更精确地说,该字段),我们可以
@FormDataParam用来表示每个参数
@FormDataParam("gender") String gender,@FormDataParam("name") String name,@FormDataParam("avatar") InputStream avatar也可以看看:
- HTML文档中的表单



