专栏首页C语言及其他语言JAVA中如何图片异步上传

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),作者:C语言

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【每日一提】问题 1418: 大神的探险 之 满载而归

    题目描述 cqy终于躲过了各种陷阱,打败了各种野怪,找到了宝藏。可是,墓穴里的氧气已经消耗殆尽,原路返回是不可能了。在这危急关头,cqy竟然奇迹般地发现一条密...

    编程范 源代码公司
  • 结构体与共用体

    1、结构体的定义和使用 前面我们已经讨论过字符数组与字符串,字符指针也可以指向一个字符串,可以用字符串常量对字符 指针进行初始化。例如: char *str...

    编程范 源代码公司
  • 高能预警:行动代号OpChina:国际黑客组织宣布今日发动对华网络攻击

    国际黑客组织匿名者(Anonymous)联合计划于2015年5月30日发动对华网络攻击,行动代号”OpChina”。目前日本、菲律宾、越南的黑客已响应行动。由于...

    编程范 源代码公司
  • WebStorm中使用Git

    如果有人和你修改了同一个文件并且已经push到远程仓库中,那么拉取远程代码的时候可能会出现冲突,如果解决不好然后又直接推到远程仓库会造成后续问题。

    前端黑板报
  • ASP.NET Core Swagger接入使用IdentityServer4 的 WebApi

    是这样的,我们现在接口使用了Ocelot做网关,Ocelot里面集成了基于IdentityServer4开发的授权中心用于对Api资源的保护。问题来了,我们的A...

    乔达摩@嘿
  • 关于 Java 中的 RMI-IIOP

    在写完《Java中RMI、JNDI、LADP、JRMP、JMX、JMS那些事儿(上)》的时候,又看到一个包含RMI-IIOP的议题,在16年Blackhat J...

    Seebug漏洞平台
  • Echarts动态加载后台数据

    后台Controller:根据业务需求不同而返回不同数据,我前台要循环遍历Echarts的series进行数据添加,所以后台返了个二维数组过去。

    wfaceboss
  • 全方位绕过安全狗

    lonelyvaf
  • java将数组元素组合为一个字符串(等同php join()函数)

    String.join(“, “, new String[]{“Hello”, “World”, “!”}) 结果:

    kirin
  • [转发] Spring MVC请求流程

    SpringMVC框架是一个基于请求驱动的Web框架,并且使用了‘前端控制器’模型来进行设计,再根据‘请求映射规则’分发给相应的页面控制器进行处理。

    Melody132

扫码关注云+社区

领取腾讯云代金券