使用Jersey上传文件:FormDataContentDisposition为null

use*_*592 6 java rest jersey

我正在尝试使用Jersey实现文件上传,所以我按照这个例子:http: //www.mkyong.com/webservices/jax-rs/file-upload-example-in-jersey/ ,它与HTML页面配合得很好.现在我将它改编为我的应用程序,这里是代码:

  public Response uploadFile(
    @FormDataParam("file") InputStream uploadedInputStream,
    @FormDataParam("file") FormDataContentDisposition fileDetail)
    throws IOException {

Response.Status respStatus = Response.Status.OK;

if (fileDetail == null) {
    respStatus = Response.Status.INTERNAL_SERVER_ERROR;
} else {
    try {
    initPath();
    if (fileDetail.getSize() > OntoWebStudioUtil
        .getUploadFileLimit()) {
        respStatus = Response.Status.NOT_ACCEPTABLE;
        return Response.status(respStatus).build();
    }

    writeToFile(uploadedInputStream, tempDirectory);
    } catch (Exception e) {
    respStatus = Response.Status.INTERNAL_SERVER_ERROR;
    e.printStackTrace();
    }
}
return Response.status(respStatus).build();
}
Run Code Online (Sandbox Code Playgroud)

但是使用调试视图,一旦我上传了我的图片并按下按钮发送然后到达此处,uploadInputStream和fileDetail为null.所以我无能为力......我是Servlet的初学者,然后是REST,所以请放纵.

谢谢.

use*_*592 18

我找到了它无法正常工作的原因:这是因为您在FormDataParameter("myForm")之后选择的名称必须与您在HTML表单中选择的名称相同(name ="myForm")

所以,

@FormDataParam("myForm") InputStream uploadedInputStream,
@FormDataParam("myform") FormDataContentDisposition fileDetail)
Run Code Online (Sandbox Code Playgroud)

形式必须像

    <form action=".../rest/fileupload" method="post" enctype="multipart/form-data">
   <p>
    Select a file : <input type="file" name="myForm"/>
   </p>
   <input type="submit" value="Upload It" />
</form>
Run Code Online (Sandbox Code Playgroud)

希望它能帮助像我这样的其他初学者:)