Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jersey restful web服务-使用多对象上载文件_Java_Web Services_File Upload_Multipartform Data_Jersey 2.0 - Fatal编程技术网

Java Jersey restful web服务-使用多对象上载文件

Java Jersey restful web服务-使用多对象上载文件,java,web-services,file-upload,multipartform-data,jersey-2.0,Java,Web Services,File Upload,Multipartform Data,Jersey 2.0,我是web服务新手,正在开发一个文档管理系统,并尝试使用restful web服务保存文件和多个对象 import java.awt.Image; import java.io.InputStream; import java.util.List; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JOptionPane; impor

我是web服务新手,正在开发一个文档管理系统,并尝试使用restful web服务保存文件和多个对象

import java.awt.Image;
import java.io.InputStream;
import java.util.List;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import com.sasianet.dmsservice.data.dao.UserDocumentDao; 
import com.sasianet.dmsservice.data.entity.UserDocument; 
import com.sasianet.dmsservice.data.entity.UserDocumentAttachment;
import com.sun.jersey.core.header.FormDataContentDisposition;
import com.sun.jersey.multipart.FormDataParam;

@Path("/userDocument")
public class UserDocumentService {

    @GET 
    @Produces(MediaType.APPLICATION_JSON)
    public List<UserDocument> findAll(){
        List<UserDocument> userDocuments = null;
        try{ 
            UserDocumentDao udo = new UserDocumentDao();
            userDocuments = udo.findAll(); 
        }catch(Exception e){
            e.printStackTrace();
        }
        return userDocuments;
    }

    @POST
    @Path("/post/test")
    @Consumes({MediaType.MULTIPART_FORM_DATA})
    public Response uploadFileWithData(
            @FormDataParam("file") InputStream fileInputStream,
            @FormDataParam("file") FormDataContentDisposition cdh,
            @FormDataParam("userDoc") UserDocument userDocument,
            @FormDataParam("attachment") UserDocumentAttachment userDocumentAttachment) throws Exception{

        Image img = ImageIO.read(fileInputStream);
        JOptionPane.showMessageDialog(null, new JLabel(new ImageIcon(img)));
        System.out.println(cdh.getName());
        System.out.println(userDocument.getDescription());
        System.out.println(userDocumentAttachment.getAttachmentName());

        return Response.ok("Cool Tools!").build();
    }   
}
项目库是

所以,我找不到任何解决方案,是否有任何不同的方式上传文件与多个对象与一个rest调用

请在这方面指导我

  • 您使用了错误的版本多部分依赖项。只要您在包中看到
    com.sun.jersey
    ,即jersey 1.x版,您就不应该将其用于2.x版项目。您需要切换版本,然后注册
    MultiPartFeature
    。有关详细信息,请参阅

  • 除非客户机能够为每个身体部位设置
    内容类型
    (有些客户机不能),否则您需要稍微调整一下方法,以获得对象的结果。比如说

    public Response post(@FormDataParam("doc") FormDataBodyPart docpart) {
        docpart.setMediaType(MediaType.APPLICATION_JSON_TYPE);
        UserDocument doc = docpart.getValueAs(UserDocument.class);
    }
    
    对于
    InputStream
    参数,您不需要这样做。有关详细信息,请参见

  • 您使用了错误的版本多部分依赖项。只要您在包中看到
    com.sun.jersey
    ,即jersey 1.x版,您就不应该将其用于2.x版项目。您需要切换版本,然后注册
    MultiPartFeature
    。有关详细信息,请参阅

  • 除非客户机能够为每个身体部位设置
    内容类型
    (有些客户机不能),否则您需要稍微调整一下方法,以获得对象的结果。比如说

    public Response post(@FormDataParam("doc") FormDataBodyPart docpart) {
        docpart.setMediaType(MediaType.APPLICATION_JSON_TYPE);
        UserDocument doc = docpart.getValueAs(UserDocument.class);
    }
    
    对于
    InputStream
    参数,您不需要这样做。有关详细信息,请参见


  • FormDataContentDisposition明白了。还有一件事我想发送一个文件+3个对象+1个列表。怎么做?FormDataContentDisposition收到了。还有一件事我想发送一个文件+3个对象+1个列表。怎么做?
    public Response post(@FormDataParam("doc") FormDataBodyPart docpart) {
        docpart.setMediaType(MediaType.APPLICATION_JSON_TYPE);
        UserDocument doc = docpart.getValueAs(UserDocument.class);
    }