zoukankan      html  css  js  c++  java
  • 带进度条的文件上传(java+ajax,附源码)【原创】

      拜读ahxu兄关于上传文件显示进度的文章,理解了其原理,由于ahxu兄那个不开源,所以为了以后扩展,只好自己写了,否则我是不会重新发明轮子的。
      首先,去apache的官网下了个最新的commons-fileupload-1.1.1.jar及其源码,看了一下,发现与原来的版本有些出入,仔细看了看commons-fileupload-1.1.1的源代码,理解了其整个过程,在inputStream那做下手脚,就可以取到进度了,这里,要感谢ahxu兄的贡献。
      ok,开始进入正题,新版本中,用的是ServletFileUpload,看了下源码,写一个与其相似的类,只是重写了parseRequest方法,以及附加一些从ahxu兄那抠出来的方法。
      在写代码的时候,还要用到关于servlet的包servlet-api.jar。
      写完后调试的过程中,老报错:java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream,后来一查才知道少了commons-io-1.2.jar,加上后,就ok了。
      关于获取及显示进度部分,用了我原来自己写的一个ajax的应用架构,从中抽取了部分代码出来,注意,js文件只适用于UTF-8编码的页面,因为现在我只写UTF-8编码的页面了,国际化方便。
      下面给个截图出来
      
      下面给出源码:
      处理文件上传的
      使用的例子
      progressUpload.jar中,包含了commons-fileupload-1.1.1.jar,servlet-api.jar,commons-io-1.2.jar,在progressUpload.jar中,还包含一个属性文件,里面是一些默认配置,可根据自己的需要修改。
      由于有源码,怎么用可以自己看源码,此外,那个例子中也写了,在此不再赘述。例子中只取到了FileItem,再将item保存一下就ok了,示例代码:
    File upFile = new File(remoteFilePath);
                    
    try
                    {
                        item.write(upFile);
                        fileInfo.put(
    "infotip""上传成功.");
                    }
                    
    catch (java.lang.Exception e)
                    {
                        fileInfo.put(
    "infotip""上传失败.");
                    }

      有什么新的想法,欢迎大家留言给我,一起把这个东东做好,发展,才是硬道理。
  • 相关阅读:
    Kubernates集群搭建
    Spring Security——基于表达式的权限控制
    JVM常用命令参数
    Spring 注解原理
    Linux SSH免登陆配置步骤
    错误日志收集sentry的安装与简单使用
    java.lang.UnsupportedClassVersionError
    docker maven 出错:Failed to execute goal com.spotify:docker-maven-plugin:...: Request error: POST https://192.168.99.100:2376/build?t=
    redis哨兵配置主从
    spring-data-redis使用哨兵配置一主多从
  • 原文地址:https://www.cnblogs.com/zxub/p/452625.html
Copyright © 2011-2022 走看看