Java Jersey restful web服务-使用多对象上载文件
我是web服务新手,正在开发一个文档管理系统,并尝试使用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
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);
}