jersey1.x集合html5使用FormData上传多文件实例

Posted LightingLYG

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jersey1.x集合html5使用FormData上传多文件实例相关的知识,希望对你有一定的参考价值。

本文主要使用jersey1.x,结合html5的FormData对象来进行多文件提交示例讲解

FormData

FormData对象是html5的一个对象,目前的一些主流的浏览器都已经兼容。IE8及以下是不支持FormData的。FormData还支持困扰众多开发者已久的ajax的上传文件,以前我们上传文件,需要写一个表单直接刷新提交,但是这里不需要了。

代码示例

html

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="js/jquery.js" type="text/javascript"></script>

<script type="text/javascript">
        function test()
            var form = new FormData(document.getElementById("form1"));

            $.ajax(
                url:"http://192.168.2.8:8066/file/multiFiles/",
                type:"post",
                data:form,
                processData:false,
                contentType:false,
                success:function(data)
                    alert("pass");
                ,
                error:function(e)
                    alert("错误!!");
                
            );        
        
</script>   
</head>
    <body>
        <form id="form1">
            <input type="file" name="fileUpload" multiple="true">
            <!-- 这里不能使用button标签,不然你懂得 -->
            <input type="button" onclick="test();" value="提交">
        </form>
    </body>
</html>

java代码

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;

import org.apache.commons.io.IOUtils;

import com.google.gson.Gson;
import com.sun.jersey.core.header.FormDataContentDisposition;
import com.sun.jersey.multipart.FormDataBodyPart;
import com.sun.jersey.multipart.FormDataMultiPart;
import com.sun.jersey.multipart.FormDataParam;


/** 
*
* @author Liuyg 
* @mail liuyg@liuyingguang.cn 
* @version  
* @time 2017年6月27日
*
*/

@Path("/file/")
public class FileRest 
    @Context ServletContext sc;
    @Context private UriInfo uriInfo;


    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @Path("/multiFiles/")
    public Response files(FormDataMultiPart form,@Context HttpServletRequest request,
            @Context HttpServletResponse response) throws IOException 

        List<FormDataBodyPart> l= form.getFields("fileUpload");
        for (FormDataBodyPart p : l) 
              InputStream is=p.getValueAs(InputStream.class);
              FormDataContentDisposition disposition=p.getFormDataContentDisposition();
              String filename=new String(disposition.getFileName().getBytes("iso8859-1"), "utf-8"); 
              System.out.println(filename);
        
        return Response.ok(new Gson().toJson("success")).build();
     

by 刘迎光@萤火虫工作室
OpenBI交流群:495266201
MicroService 微服务交流群:217722918
mail: liuyg#liuyingguang.cn
博主首页(==防止爬虫==):http://blog.liuyingguang.cn

以上是关于jersey1.x集合html5使用FormData上传多文件实例的主要内容,如果未能解决你的问题,请参考以下文章

将使用 jersey 1.x 的 java 代码转换为 jersey 2.x

使用PHP和HTML5 FormData实现无刷新文件上传教程

new FormDat() 相关知识点

HTML5+CSS3 效果网站集合

带有 Jersey 2 的气氛 PubSub

Html5&JavaScript集合,画出一只动态狗,网友直呼真像……