博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC结合Ajaxfileupload异步多文件上传至远程服务器
阅读量:6881 次
发布时间:2019-06-27

本文共 5397 字,大约阅读时间需要 17 分钟。

  hot3.png

//这里就是两个file id自己定义
$.ajaxFileUpload({    url : web_path+'upload/upload.do',    secureuri : false,    data : data,//需要传递的数据 json格式    fileElementId :['playeraddress','cover'],    dataType : 'json',    success : function(data) {           //上传成功后的回调。    },    error : function(data) {    }});
/**     *     *      * @param request     * @param response     * @param audioItem     * @return     */    @RequestMapping(value = "/upload.do", method = { RequestMethod.POST })    @ResponseBody    public String addMusic(HttpServletRequest request,            HttpServletResponse response, AudioItem audioItem) {        //这里无需理会,这只是        String uploadFileUrl = GlobalUtil .getValue("upload_audioItem_audio_url");        String uploadIconUrl = GlobalUtil.getValue("upload_audioItem_pic_url");        CommonsMultipartResolver resolver = new CommonsMultipartResolver(                request.getServletContext());        if (resolver.isMultipart(request)) {            MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;            // 取得request中的所有文件名            Iterator
 iter = multiRequest.getFileNames();            while (iter.hasNext()) {                String fileName = iter.next();                // 取得上传文件                MultipartFile file = multiRequest.getFile(fileName);                /**                 * 获取文件名                 */                String originalFilename = file.getOriginalFilename();                                if ("playeraddress".equals(fileName)&&!"".equals(originalFilename)) {                    try {                        //这里的upload方法就是以http post的方式上传文件的 稍后贴出                        String url = BaseService.upload(uploadFileUrl,                                file.getOriginalFilename(),                                file.getInputStream());                    } catch (IOException e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                    }                }                if ("cover".equals(fileName)&&!"".equals(originalFilename)){                    try {                        String icon = BaseService.upload(uploadIconUrl,                                file.getOriginalFilename(),                                file.getInputStream());                    } catch (IOException e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                    }                }            }            //这里需要注意 使用Ajaxfileupload需要使用以下方式返回结果 回调不了success 方法            response.setContentType("text/html");              try {                response.getWriter().write("ok");            } catch (IOException e) {                e.printStackTrace();            }        }        return null;    }
//最后一步了     public static String upload(String httpurl, String fileName, InputStream inputStream) {        String result = "";        try {            //这里看你的网络环境 按需设置代理  正常都不需要理会            if (true) {                System.setProperty("http.proxyHost", BaseService.PROXY_IP);                System.setProperty("http.proxyPort", BaseService.PROXY_PORT);            }            String BOUNDARY = "---------7d4a6d158c9"; // 定义数据分隔线            URL url = new URL(httpurl);            HttpURLConnection conn = (HttpURLConnection) url.openConnection();            // 发送POST请求必须设置如下两行            conn.setDoOutput(true);            conn.setDoInput(true);            conn.setUseCaches(false);            conn.setRequestMethod("POST");            conn.setRequestProperty("connection", "Keep-Alive");            conn.setRequestProperty("user-agent",                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");            conn.setRequestProperty("Charsert", "UTF-8");            conn.setRequestProperty("Content-Type",                    "multipart/form-data; boundary=" + BOUNDARY);            OutputStream out = new DataOutputStream(conn.getOutputStream());            byte[] end_data = ("\r\n--" + BOUNDARY + "--\r\n").getBytes();// 定义最后数据分隔线            StringBuilder sb = new StringBuilder();            sb.append("--");            sb.append(BOUNDARY);            sb.append("\r\n");            sb.append("Content-Disposition: form-data;name=\"file" + 1                    + "\";filename=\"" + fileName + "\"\r\n");            sb.append("Content-Type:application/octet-stream\r\n\r\n");            byte[] data = sb.toString().getBytes();            out.write(data);            DataInputStream in = new DataInputStream(inputStream);            int bytes = 0;            byte[] bufferOut = new byte[1024];            while ((bytes = in.read(bufferOut)) != -1) {                out.write(bufferOut, 0, bytes);            }            out.write("\r\n".getBytes()); // 多个文件时,二个文件之间加入这个            in.close();            out.write(end_data);            out.flush();            out.close();            // 定义BufferedReader输入流来读取URL的响应            BufferedReader reader = new BufferedReader(new InputStreamReader(                    conn.getInputStream()));            String line = null;            while ((line = reader.readLine()) != null) {                result+=line;            }        } catch (Exception e) {            System.out.println("发送POST请求出现异常!" + e);        }            return new JSONObject(result).getString("url");    }// 到这就结束了!希望能帮到你。

转载于:https://my.oschina.net/pingdy/blog/361833

你可能感兴趣的文章
虚拟机移动位置后找不到网卡eth0
查看>>
Meta标签
查看>>
MIME
查看>>
Spring MVC之@RequestMapping 简介
查看>>
使用Putty自动登录Linux主机
查看>>
Java 中的伪共享详解及解决方案
查看>>
Spring 源码分析(一) —— 迈向Spring之路
查看>>
SVN Server 安装配置
查看>>
Git常用命令解说
查看>>
比较全面的MySQL优化参考
查看>>
springCloud-9.Client使用Config Server
查看>>
textfield学习
查看>>
shell 中$()、${}、$(())
查看>>
springmvc 上传文件随记笔记实例给初学者
查看>>
多线程/线程池20问
查看>>
HBase性能优化方法总结(一):表的设计
查看>>
START WITH CONNECT BY PRIOR子句实现递归查询
查看>>
Java注解
查看>>
从异常堆栈中还原 ProGuard 混淆过的代码
查看>>
A20修改顶部状态栏 禁止跳转设置界面
查看>>