码迷,mamicode.com
首页 > Web开发 > 详细

jersey文件上传

时间:2015-02-07 18:56:53      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:jersey

最近在搞webService的文件上传。服务器端好搞,就是客户端比较麻烦,mark一下。

服务端的代码:

@POST
@Path("uploadFile")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_XML)
public String uploadFile(FormDataMultiPart form) {
    String filePath;
    String baseUrl = AppConfig.getProperty("res.root.path");
    try {
        UploadRule rule = new UploadRule(baseUrl,Constants.SPT + UploadRule.ACCESS_SCOPE_PROTECTED + SCOPE);
        //boay中可能有多个附件,循环出来
        List<BodyPart> v1 = form.getBodyParts();
        List<String> paths = new ArrayList<String>();
        for (BodyPart p : v1) {
            FormDataBodyPart vPart = (FormDataBodyPart) p;
            InputStream v = vPart.getValueAs(InputStream.class);
            String fileName = vPart.getName();
            File destDir = new File("d:/upload/files");
            if(!destDir.exists()) 
                destDir.mkdirs(); 
            OutputStream outputStream = new FileOutputStream(new File("d:/upload/files/"+fileName ));
            int length = 0;
            byte[] buff = new byte[1024];
            while (-1 != (length = v.read(buff))) {
                outputStream.write(buff, 0, length);
            }
            v.close();
            outputStream.close();
<pre name="code" class="html">            filePath = "d:/upload/files/"+fileName 
        }
        response.setPaths(paths);
        return filePath;
    } catch (Exception e) {
        e.printStackTrace();
        response.setResponseStatus(BaseResponse.RESPONSE_STATUS_ERROR);
        response.setResponseMessage(BaseUtil.getStackTrace(e));
        return filePath;  
 }
}


客户端代码:

public static void main(String[] args) {
		ClientConfig config = new DefaultClientConfig();
		Client client = Client.create(config);
		//上传的地址
		WebResource r = client.resource("http://jjy.cost168.com/api/upload/uploadFile");
		FormDataMultiPart form=new FormDataMultiPart();
			File f = new File("d:/x1.txt");
			InputStream file = null;
			try {
				file = new FileInputStream(f);
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			}
			FormDataBodyPart formDataBodyPart = new FormDataBodyPart();
			//这里指定上传时的类型
			formDataBodyPart.setValue(MediaType.MULTIPART_FORM_DATA_TYPE, file);
			formDataBodyPart.setName("x1.txt");
			form.getBodyParts().add(formDataBodyPart);//这样写的好处是可以上传多个附件
			//这里的type也要指定为data
			FilesResponse files = r.accept(MediaType.APPLICATION_XML).type(MediaType.MULTIPART_FORM_DATA).post(FilesResponse.class, form);
			for (String string : files.getPaths()) {
				System.out.println(string);
			}
	}
需要用到的jar

<dependency>
	<groupId>com.cost168.lib.bl</groupId>
	<artifactId>rest_core</artifactId>
	<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
	<groupId>com.sun.jersey</groupId>
	<artifactId>jersey-core</artifactId>
	<version>1.17.1</version>
</dependency>
<dependency>
	<groupId>com.sun.jersey</groupId>
	<artifactId>jersey-client</artifactId>
	<version>1.17.1</version>
</dependency>
<dependency>
	<groupId>com.sun.jersey</groupId>
	<artifactId>jersey-json</artifactId>
	<version>1.17.1</version>
</dependency>
<dependency>
	<groupId>com.sun.jersey.contribs</groupId>
	<artifactId>jersey-multipart</artifactId>
	<version>1.17.1</version>
</dependency>













jersey文件上传

标签:jersey

原文地址:http://blog.csdn.net/mimixin/article/details/43604717

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!