有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

对文件上载服务使用“multipart/formdata”时出现java严重错误

我得到这个错误:

SEVERE: Resource methods utilizing @FormParam and consuming "multipart/form-data" are no longer supported. See @FormDataParam

当基于Apache Jersey的Rest web服务的客户端web访问完成时,我现在正在工作:

@POST
@Path("upload")
@Consumes("multipart/form-data")
@Produces("text/plain")
public String uploadFile(@FormParam("file") File file, @FormParam("file") FormDataContentDisposition fileDetail) {
    String fileLocation = "/files/" + fileDetail.getFileName();
    System.out.println("File location: " + fileLocation);
    // Load image
    try {
        byte[] imageBytes = loadImage(fileLocation);
        MongoConnection conn = MongoUtil.getConnection();
        conn.connect("m1", "avatar"); 
        GridFS fs = new GridFS(conn.getDB());
        GridFSInputFile in = fs.createFile(imageBytes);
        in.save();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return "1";
}

我尝试过从@FormParam更改为@FormDataParam,但没有解决

有什么办法可以解决这个问题


共 (2) 个答案

  1. # 1 楼答案

    试试这个:

    @Path("upload")
    @Consumes("multipart/form-data")
    @POST
    public void handleUpload(@FormParam("file") InputStream file) throws Exception {
    // do your thing
    }
    

    你也可以参考this post

    对于客户端:

    import java.io.File;
    
    import javax.ws.rs.core.MediaType;
    
    import com.sun.jersey.api.client.Client;
    import com.sun.jersey.api.client.WebResource;
    import com.sun.jersey.multipart.FormDataMultiPart;
    
    public class UploadExample {
      public void upload(String url, File f, String formName) {
        FormDataMultiPart form = new FormDataMultiPart().field(formName, f, MediaType.MULTIPART_FORM_DATA_TYPE);
        WebResource webResource = Client.create().resource(url);
        webResource.type(MediaType.MULTIPART_FORM_DATA)
                   .accept(MediaType.TEXT_PLAIN)
                   .post(form);
        }
    }
    
  2. # 2 楼答案

    您必须下载并使用jersey multipart。罐子