Fine Uploader 简单配置方法

由于jquery.uploadify是基于flash的jquery上传控件,客户老是说出问题,所以今天换成了一个纯js的异步上传控件。

这方面的资料很少,故此记下来分享一下。

项目地址:Fine Uploader

1.jsp页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page language="java" import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Fine Uploader Demo</title>
    <link href="./plugins/jquery.fineuploader-3.7.1/fineuploader-3.7.1.min.css" rel="stylesheet"> <!-- 样式 -->
  </head>
  <body>
    <div id="jquery-wrapped-fine-uploader"></div>
    <div id="triggerUpload">上传</div>
     <script type="text/javascript" src="./plugins/jquery/jquery-1.7.min.js"></script> <!-- jquery -->
    <script src="./plugins/jquery.fineuploader-3.7.1/jquery.fineuploader-3.7.1.min.js"></script> <!-- Fine Uploader -->
    <script>
    $(document).ready(function () {
        $('#jquery-wrapped-fine-uploader').fineUploader({
          request: {
            endpoint: 'fineUpload.action'                           //处理文件上传的action
          },
          text: {
              uploadButton: '选择上传文件'                            //上传按钮的文字
          },
          multiple: false,                                           //是否为多文件上传
          validation: {
              allowedExtensions: ['apk', 'rar', 'zip',], //限制上传格式
              sizeLimit: 1024* 1024* 1024 * 1024 * 1024              //限制上传大小
          },
          autoUpload: false,                                         //是否自动提交
          editFilename: {                                            //编辑名字
              enable: true
          }
        }).on({                                                       //注册监听事件
            "complete": function(event, id, fileName, responseJSON) { //完成
                if(responseJSON.success) {
                    alert(responseJSON.success);
                }
            },
            "cancel": function(event, id,fileName){                   //取消
                alert(fileName);
            },
       "submit": function(event, id, fileName) { //选择文件后
         alert('文件选择');
       }
"error": function(event, id, fileName, reason) { //出错,这里还有些其他事件,我暂时不用就没实践,大家可以自己去看api alert(reason); } }); }); $("#triggerUpload").click(function() { //手动提交 $('#jquery-wrapped-fine-uploader').fineUploader('uploadStoredFiles'); }); </script> </body> </html>

这种配置方法是基于jquery的,官方还有基于原生js的。

2. struts2的action:

package cn.zyc.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;

import cn.zyc.util.ActionUtil;

import com.opensymphony.xwork2.ActionSupport;

public class FineUploadTest extends ActionSupport{
    private File qqfile;             //上传文件的name,默认就是这个
    private String qqfileFileName;   //上传文件名
    
    HttpServletResponse response = (HttpServletRequest)ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
    HttpServletRequest request = (HttpServletRequest)ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE);
    
    public File getQqfile() {
        return qqfile;
    }

    public void setQqfile(File qqfile) {
        this.qqfile = qqfile;
    }

    public String getQqfileFileName() {
        return qqfileFileName;
    }

    public void setQqfileFileName(String qqfileFileName) {
        this.qqfileFileName = qqfileFileName;
    }

    @Action(value="fineUpload")
    public void fineUpload(){
        String path = ServletActionContext.getServletContext().getRealPath("/");
        System.out.println("path= " + path);
        FileOutputStream fos = null;
        FileInputStream fis = null;
        if(qqfile != null) {
            try {
                fos = new FileOutputStream(path + "\\" + qqfileFileName);
                fis = new FileInputStream(getQqfile());
                byte[] buffer = new byte[1024];
                int len = 0;
                while((len = fis.read(buffer)) > 0) {
                    fos.write(buffer, 0, len);
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if(fis != null) {
                        fis.close();
                    }
                    if(fos != null) {
                        fos.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            
            try {
                PrintWriter writer = response.getWriter();
                writer.write("{\"success\": \"ok\"}");    //这里注意返回的内容必须是json的格式
                writer.flush();
                writer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

这里的两个注意点是:1)上传文件的名字默认是qqfile,且我没找到自行配置名字的选项。如果有知道的请告诉小弟哈。

          2)ajax返回的内容必须是json的格式

3. 参考资料

1)乱世经典   注意他的版本貌似有点旧了,但是讲的很详细

转载于:https://www.cnblogs.com/lihuabest/p/3243410.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值