JAVA中如何图片异步上传

来源:程序员头条:http://www.90159.com/2015/12/15/java-upload-picture/ 在java中要实现异步上传要提前做好准备,对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件。

这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,struts上传的功能就是基于这个实现的。

common-fileupload是依赖于common-io这个包的,所以还需要下载这个包。剩下的就是js文件的导入了,我导入了以下文件:

<script type="text/javascript" src="lib/Js/jquery.js"></script>
 <script ltype="text/javascript" src="/js/ajaxfileupload.js"></script>

在页面中的写法:

 div class="controls">
<span class="btn green fileinput-button">
<i class="icon-plus icon-white"></i>
    <span>上传照片</span>
    <input id="fileToUpload" name="myfiles" type="file" onchange="upload()" title="上传" />
</span>
 </div>function upload(){
            $.ajaxFileUpload  
             (  
                 {  
                     url:'<%=basePath%>sysperson/uploadpic',  
                     secureuri:false,  
                     fileElementId:'fileToUpload',  
                     dataType: 'text',  
                     success: function (data, status)  
                     {
                        document.all.mypic.src="<%=basePath%>uploads/" + data;
                        document.all.picpath.value = data;
                    },                    error : function(data, status, e) {
                        alert(e);
                    }
                });
            }

java代码写法:

@RequestMapping(value = "uploadpic",method=RequestMethod.POST)
    public void fileUpload(@RequestParam MultipartFile[] myfiles,
            HttpServletRequest request, HttpServletResponse response)
            throws IOException {
        String imgPath = "/uploads" + "/";
        File directory = new File(request.getSession().getServletContext()
                .getRealPath("/")
                + imgPath);
        String desFileName = null;
        String fileNewName = null;
        response.setContentType("text/html; charset=UTF-8");
        PrintWriter out = response.getWriter();
        String originalFilename = null;        for (MultipartFile myfile : myfiles) {            if (myfile.isEmpty()) {
                out.write("请选择文件后上传");
                out.flush();
            } else {
                originalFilename = myfile.getOriginalFilename();                if (null != originalFilename && originalFilename.length() > 0) {
                    fileNewName = UUID.randomUUID() + originalFilename;
                    desFileName = directory.toString() + "/" + fileNewName;
                }
                try {
                    FileUtils.copyInputStreamToFile(myfile.getInputStream(),
                            new File(desFileName));
                } catch (IOException e) {
                    e.printStackTrace();
                    out.write("文件上传失败,请重试!!");
                    out.flush();
                }
            }
        }
        out.print(fileNewName);
        out.flush();
    }

原文发布于微信公众号 - 编程范(dotcpp)

原文发表时间:2015-12-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏菩提树下的杨过

spring-boot 速成(1) helloworld

一、mac上安装 $ brew tap pivotal/tap $ brew install springboot 安装成功后,可在终端查看命令行 ➜  ~ s...

2335
来自专栏XAI

那些年Struts 1.X 而今我还是不会

struts1是WEB程序MVC分层架构中的C,属于控制层,主要进行处理用户的请求,基于请求驱动。 获取用户的请求地址并将表单中的数据封装到Form 对象后交给...

2067
来自专栏魏琼东

centos+scala2.11.4+hadoop2.3+spark1.3.1环境搭建

一、Java安装 1、安装包准备: 首先到官网下载jdk,http://www.oracle.com/technetwork/java/javase/downl...

3284
来自专栏PPV课数据科学社区

【工具】大数据在线分析利器:Hue

? Hue百科: Hue 是一种基于Apche hadoop基础平台的在线开源数据分析接口,参见 gethue.com ? Hue的主要功能: 提供SQL 接...

4746
来自专栏IT可乐

如何解决跨域问题?

  如何解决跨域问题?首先我们需要知道什么是跨域,跨域指的是浏览器不能执行其它网站的脚本,它是由浏览器的同源策略造成的,是浏览器对JavaScript 施加的安...

2K2
来自专栏FreeBuf

新手指南:DVWA-1.9全级别教程(完结篇,附实例)之XSS

* 本文原创作者:lonehand,转载请注明来自FreeBuf.COM 目前,最新的DVWA已经更新到1.9版本(http://www.dvwa.co.uk...

1.4K5
来自专栏Coding01

花 2 小时撸一个 RSS 生成器

现在越来越多的网站都不支持 RSS 订阅了,而作为 RSS 的忠实粉丝,还是希望有个工具可以将自己关注的网站内容聚合在一起,然后实时推送到手机上,及时获取最新消...

7232
来自专栏菩提树下的杨过

spring-boot 速成(1) helloworld

一、mac上安装 $ brew tap pivotal/tap $ brew install springboot 安装成功后,可在终端查看命令行 ➜  ~ s...

2308
来自专栏编程坑太多

react-native组建wechat

1513
来自专栏禁心尽力

SpringBoot整合Mybatis之进门篇

已经有好些日子没有总结了,不是变懒了,而是我一直在奋力学习springboot的路上,现在也算是完成了第一阶段的学习,今天给各位总结总结。        之前...

1.6K6

扫码关注云+社区

领取腾讯云代金券