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>
时间: 2024-08-07 17:02:33

jersey文件上传的相关文章

前后端分离跨服务器文件上传-Java SpringMVC版

近来工作上不上特别忙,加上对后台java了解一点,所以就抽时间,写了一个java版本的前后端分离的跨服务器文件上传功能,包括前后端代码. 一.Tomcat服务器部分 1.Tomcat服务器 单独复制一份Tomcat,用来作为文件服务器 1.1 xml文件: 需要在该Tomcat的conf目录下的web.xml文件的大概100行添加如下部分: 1.2 server.xml文件: 需要在该Tomcat的conf目录下的server.xml文件做一些端口的修改 1.3 Tomcat下建立文件夹 在该T

图片文件上传

一.文件上传条件: 1.依赖表单,请求方式为post, enctype="multipart/form-data" 2.表单中有file类型的input 二.提交文件上传的表单,不需要页面跳转,用jquery.form.js插件.以ajax方式提交表单 1 function submitUpload(){ 2 var option = { 3 url:path+"/upload/uploadPic.do",//上传的url 4 dataType:"text

springMvc---跨服务器文件上传(实测总结)

序言: 该案例是采用springMvc实现跨服务器图片上传功能,其中用到的主要类和工具有:CommonsMultipartResolver.jquery.form.js.如果要实现多个文件上传,只需要在input元素中加入multiple="multiple",即可选择多个文件进行上传.另外本文的上传的文件路径不是在tomcat下对应的文件夹中,而是在workspace对应的文件夹中存在.该案例使用ajax上传页面不刷新,多个图片可立即回显,并将其相对路径可以随着表单一起保存到数据库中

SpringMVC基础(二)_文件上传、异常处理、拦截器

实现文件上传 实现文件上传,需要借助以下两个第三方 jar 包对上传的二进制文件进行解析: commons-fileupload commons-io form表单的 enctype 取值必须为:multipart/form-data(默认为:application/x-www-form-urlencoded):enctype为表单请求正文的类型:method 属性必须取值为 post 方式:提供一个文件选择域: <input type="file"/> : <for

spring实现文件上传

spring-文件上传 文件上传的回顾 导入文件上传的jar包 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:

简单利用filetype进行文件上传

对于文件上传大家都很熟悉了,毕竟文件上传是获取webshell的一个重要方式之一,理论性的东西参考我的另一篇汇总文章<浅谈文件解析及上传漏洞>,这里主要是实战补充一下理论内容--filetype漏洞! filetype漏洞主要是针对content-type字段,主要有两种利用方式:    1.先上传一个图片,然后将content-type:image/jpeg改为content-type:text/asp,然后对filename进行00截断,将图片内容替换为一句话木马. 2.直接使用burp抓

jquery-ajax实现文件上传异常处理web.multipart.MultipartException

异常如下: org.springframework.web.multipart.MultipartException: The current request is not a multipart request 原因分析: 可能原因1: form表单中没有添加 enctype="multipart/form-data" 属性 可能原因2: 请求方式必须为post,如果不是则必定出错 可能原因3: 请求的contentType不是"multipart/form-data&qu

SpringMVC中文件上传的客户端验证

SpringMVC中文件上传的客户端验证 客户端验证主要思想:在jsp页面中利用javascript进行对文件的判断,完成验证后允许上传 验证步骤:1.文件名称 2.获取文件的后缀名称 3.判断哪些文件类型允许上传 4.判断文件大小 5.满足条件后跳转后台实现上传 前台界面(验证上传文件是否格式满足要求): <body> <h2>文件上传</h2> <form action="upload01" method="post" 

文件上传

1.上传的步骤: a.导入SmartUpload.jar b.创建一个上传的类的对象 c.初始化 d.上传至服务器 e.保存 表单提交时需要指定enctype="multipart/form-data"(多数据类型提交) http://www.atguigu.com/opensource.shtml#3(包下载地址) package com.zuxia.servlet; import java.io.IOException;import java.io.PrintWriter; imp