uploadify文件上传

  • 前端页面上传代码
    • 最简代码

      <script type="text/javascript" src="/jquery-1.11.1/jquery.min.js"></script>

      <link rel="stylesheet" type="text/css" href="/uploadify-3.2.1/uploadify.css" />

      <script type="text/javascript" src="/uploadify-3.2.1/jquery.uploadify.min.js"></script>

      <script type="text/javascript">

      $(function() {

      var options = {

      "swf"      : "/uploadify-3.2.1/uploadify.swf",//flash地址

      "uploader"      : "/upload",//上传请求处理地址

      "fileObjName" : "file",//文件对象名

      "fileSizeLimit": 2048,//2M,文件大小限制

      "fileTypeExts":"*.png;*.jpg;*.pdf;*.jpeg",//文件类型限制,分号分隔

      "formData":{type:"image"},//传入表单参数

      "successTimeout" : 90,//超时设置

      };

      $("#file_upload1").uploadify($.extend(options, {//多个上传按钮时用options提供公用配置
                      "formData":{type:"image"}, //这里提供特定配置(这会改变options,是个对后面的uploadify调用不友好的副作用)

      onUploadSuccess:function(file, data, response){//data可以是字符串domain+path,不支持json返回格式

      var paths = data.split(",");//数据库存相对路径path,访问时拼接domain+path即可

      $("#path1").val(paths[1]).next("a").attr("href",paths[0]+paths[1]).text(file.name);

      }

      }));

      });

      </script>  
      <input type="file" name="file1" id="file_upload1" />

    • 简单封装,
      <script src="$static_url/admin/js/uploadify-3.2.1/uploadify.settings.js"></script>  

      var static_url = "/resources";//修改js需要用到的资源和上传路径

      var upload = "http://114.215.183.178:8090";

      var settings = {

      swf : static_url+"/admin/js/uploadify-3.2.1/uploadify.swf",

      cancelImg : static_url+"/admin/js/uploadify-3.2.1/uploadify-cancel.png",

      buttonText : "选择文件...",

      uploader : upload+"/upload/temp",

      formData : {type : "image" },

      fileObjName : "file",

      fileTypeExts : "*.png;*.jpg;*.jpeg",

      fileTypeDesc : "图片文件",

      fileSizeLimit : 2048,

      successTimeout : 90

      };

      /**

      * @param fileInputId <input type="file" id="fileInputId"/>

      * @param pathInputId <input id="pathInputId"/>

      */

      function uploadify(fileInputId, pathInputId){

      $(fileInputId).uploadify(jQuery.extend(settings, {

      onUploadSuccess:function(file, data, response){

      var paths = data.split(",");

      $(pathInputId).val(paths[1]).next("a").attr("href",paths[0]+paths[1]).text("预览");

      }

      }));

      }  
      uploadify("#idFrontCopyFile", "#idFrontCopy"); //这里的id与上传按钮html对应

      <div class="button-all">

      <div class="button-left">

      <input id="idFrontCopy" name="idFrontCopy" class="Mtext1-1" readonly /><a href="" target="_blank"></a>

      </div>

      <div class="button-right">

      <input id="idFrontCopyFile" type="file" name="idFrontCopyFile" />

      </div>

      </div>

    • 参数详解
      • onUploadSuccess,参数格式参考uploadify.js源码
    • 资源访问:
      • buttonImage+button_image_url,修改uploadify.js,当没有提供按钮图片时不去请求根路径/
        this.settings.button_image_url = this.settings.button_image_url ? SWFUpload.completeURL(this.settings.button_image_url) : this.settings.button_image_url
      • uploadify-cancel.png,修改uploadify.css,

        .uploadify-queue-item .cancel a {

        background: url(‘uploadify-cancel.png‘) 0 0 no-repeat

    • 错误处理
      • uploadError: HTTP ERROR : File ID: SWFUpload_0_0. HTTP Status: 406.
        当button_image_url找不到时报错406
        上传文件后可以返回1,或path字符串,不支持json串(需要返回表示上传成功的东西,否则uploadify会认为上传失败)
      • uploadError : IO Error : File ID: SWFUpload_0_0. IO Error: Error #2038
        可能是fileObjName对不上,或返回结果不正确
        可能是host没有对应,比如localhost访问外网ip的uploadify.swf,这时需要在外网的根路径下提供权限文件http://host/crossdomain.xml

        <?xml version="1.0"?>

        <!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

        <cross-domain-policy>

        <allow-access-from domain="*" />

        </cross-domain-policy>

  • 后端请求处理
    • 样例

      @RequestMapping("")

      public Object upload(@RequestParam String type, MultipartFile file) {

      String path = path(type, file.getOriginalFilename());

      File target = new File(props.getProperty("uploads"), path);

      boolean save = save(target, file);

      if(save) {

      return string(props.getProperty("uploads_domain")+","+path);

      }

      return null;//返回null表示上传失败

      }

      private String string(String string) {//处理uploadify得到结果路径中乱码问题

      return StringUtils.newStringIso8859_1(StringUtils.getBytesUtf8(string));

      }

  • 代码上传文件
    • 样例,需要引用httpmime模块,org.apache.httpcomponents:httpmime:4.3.4

      private HttpClient client = HttpClients.createDefault();

      private String testFile = "E:/系统默认形象1.0_161.png";

      private static ContentType textUtf8 = ContentType.create("text/plain", Consts.UTF_8);

      @Test

      public void upload() throws ClientProtocolException, IOException {

      HttpEntity entity = MultipartEntityBuilder.create()

      .setMode(HttpMultipartMode.RFC6532)//BROWSER_COMPATIBLE自定义charset,RFC6532=utf-8,STRICT=iso-8859-1

      .addTextBody("name", testFile, textUtf8)//中文文件名还是需要传utf-8编码

      .addBinaryBody("file", new File(testFile))

      .build();

      HttpUriRequest post = RequestBuilder.post()

      .setUri("http://localhost:8080/upload")

      .setEntity(entity).build();

      HttpResponse response = client.execute(post);

      System.out.println(response.getStatusLine().getStatusCode() + " => " + IOUtils.toString(response.getEntity().getContent(), "utf-8"));

      }

来自为知笔记(Wiz)

时间: 2024-10-25 01:19:43

uploadify文件上传的相关文章

jQuery.uploadify文件上传组件实例讲解

1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好,无刷新,带上传进度等等.在最近的短信平台开发中,使用Uploadify进行文件上传. Uploadify官网地址是:http://www.uploadify.com/ 可满足项目开发需求. 下载地址:http://www.uploadify.com/wp-content/uploads/files/

详解jQuery uploadify文件上传插件的使用方法

uploadify这个插件是基于js里面的jquery库写的.结合了ajax和flash,实现了这个多线程上传的功能. 现在最新版为3.2.1. 在线实例 实例中用到的php文件UploaderDemo.php请在页面下方下载 引入文件 <link rel="stylesheet" type="text/css" href="uploadify.css" /> <script type="text/javascript

记录-Jquery uploadify文件上传实例

原本做的是from表单的文件上传,后来因需要用ajax异步,so接触到了Jquery uploadify上传 贴上代码,以供参考 需要引入的js文件 <link href="../res/uploadify/uploadify.css" rel="stylesheet" type="text/css" /> <script src="../res/uploadify/jquery.uploadify.min.js&qu

jQuery uploadify 文件上传

uploadify这个插件是基于js里面的jquery库写的.结合了ajax和flash,实现了这个多线程上传的功能.现在最新版为3.2.1. 在线实例 实例预览 Uploadify 在线实例Demo演示 实例中用到的php文件UploaderDemo.php请在页面下方下载 引入文件 <link rel="stylesheet" type="text/css" href="uploadify.css" /> <script t

2.火狐浏览器上,uploadify文件上传不兼容,和session重新发起的问题

前段时间做表单中有文件上传的功能,主要是因为用uploadify上传,发生了问题: 问题描述1:用uploadify实现文件上传时,遇到在火狐上不兼容问题,uploadify样式无法加载的问题,这个简单,直接在火狐浏览器上安装flash插件就可以了解决, 问题描述2:使用uploadify上传文件时,发现上传文件的session(以下就叫file_session)和提交表单的session(sub_session)不一样.在提交表单的Action中我们想要获取之前的请求在session设置的值时

结合项目(Spring+(基于注解的)SpringMVC和Mybatis+uploadify文件上传)--poi解析Excel文件

poi解析Excel文件 1.上传文件至服务器 2.解析Excel文件并返回数据集合 3.将数据保存到服务器 框架======Spring+(基于注解的)SpringMVC和Mybatis===== 第一步: 前台: jsp文件采用的是uploadify <div id="fileQueue"></div> <input type="file" id="brandFile"> js: <script ty

uploadify文件上传的使用

1.jsp代码 1 appname=$("#appname").val(); 2 $("#uploadify").uploadify({ 3 'swf' : '<%=basePath%>/Backstage/Style/jQuery-uploadify/uploadify.swf', 4 // 'script' : 'ProductAction!fileUpload.do',//后台处理的请求 5 'uploader': 'AppVersionActio

文件上传~Uploadify上传控件~续(多文件上传)

对于Uploadify文件上传之前已经讲过一次(文件上传~Uploadify上传控件),只不过没有涉及到多文件的上传,这回主要说一下多个文件的上传,首先,我们要清楚一个概念,多文件上传前端Uploadify是通过轮训的方式去调用我们的后台upload程序的,所以,对于多文件上传来说,也没什么稀奇的. 下面是文件上传后的缩略图如下 列表的组装使用JS模板,这样对于复杂的HTML结构来说,可以减少拼写错误的出现,关闭是将LI元素从UI元素移除,最后提交时,从UI里检查LI元素,然后对它进行组装,并进

web实现大文件上传分片上传断点续传

需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制. 第一步: 前端修改 由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Uploadify文件上传组件,在项目使用的jslib项目中找到了BJUI框架集成jQuery Uploadify的部分,这部分代码封装在bjui-all.js文件中, 在bjui-all.js文件中的全局变量定义中有以下