在 Jax-Rs 上使用注释 Post 发送和不发送文件
Send and not send a file using annotation Post on Jax-Rs
我正在开发 Jax-Rs 服务,我必须创建一些有文件和无文件的东西。
@POST
@Path("makesomething")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.TEXT_PLAIN)
public String makesomething(@FormDataParam("file") InputStream uploadedInputStream, @FormDataParam("file") FormDataContentDisposition fileDetail, @FormDataParam("variable") String variable, @Context HttpServletRequest request) throws IOException {
//make something
}
如果我不发送文件,我会收到一条错误消息,说必须发送文件。我怎样才能在不发送文件的情况下做到这一点?
André 是对的,像这样的东西应该可以正常工作(假设当您不上传文件时您只是发布表单数据):
@POST
@Path("makesomething")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.TEXT_PLAIN)
public String makesomething(@FormDataParam("file") InputStream uploadedInputStream, @FormDataParam("file") FormDataContentDisposition fileDetail, @FormDataParam("variable") String variable, @Context HttpServletRequest request) throws IOException {
makeSomethingImpl(uploadedInputStream, fileDetail, variable, request);
}
@POST
@Path("makesomething")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.TEXT_PLAIN)
public String makesomething(@FormDataParam("variable") String variable, @Context HttpServletRequest request) throws IOException {
makeSomethingImpl(null, null, variable, request);
}
private String makeSomethingImpl(final InputStream uploadedInputStream, final FormDataContentDisposition fileDetail, final String variable, final HttpServletRequest request) {
// make something
}
我正在开发 Jax-Rs 服务,我必须创建一些有文件和无文件的东西。
@POST
@Path("makesomething")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.TEXT_PLAIN)
public String makesomething(@FormDataParam("file") InputStream uploadedInputStream, @FormDataParam("file") FormDataContentDisposition fileDetail, @FormDataParam("variable") String variable, @Context HttpServletRequest request) throws IOException {
//make something
}
如果我不发送文件,我会收到一条错误消息,说必须发送文件。我怎样才能在不发送文件的情况下做到这一点?
André 是对的,像这样的东西应该可以正常工作(假设当您不上传文件时您只是发布表单数据):
@POST
@Path("makesomething")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.TEXT_PLAIN)
public String makesomething(@FormDataParam("file") InputStream uploadedInputStream, @FormDataParam("file") FormDataContentDisposition fileDetail, @FormDataParam("variable") String variable, @Context HttpServletRequest request) throws IOException {
makeSomethingImpl(uploadedInputStream, fileDetail, variable, request);
}
@POST
@Path("makesomething")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.TEXT_PLAIN)
public String makesomething(@FormDataParam("variable") String variable, @Context HttpServletRequest request) throws IOException {
makeSomethingImpl(null, null, variable, request);
}
private String makeSomethingImpl(final InputStream uploadedInputStream, final FormDataContentDisposition fileDetail, final String variable, final HttpServletRequest request) {
// make something
}