您的位置:首页 > 其它

uploadify实现文件上传

2012-11-30 16:34 316 查看
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <base href="<%=basePath%>">

   

    <title></title>

   

 <meta http-equiv="pragma" content="no-cache">

 <meta http-equiv="cache-control" content="no-cache">

 <meta http-equiv="expires" content="0">   

 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

 <meta http-equiv="description" content="This is my page">

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

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

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

    <script type="text/javascript">

         $(function() {

      $("#file_upload").uploadify({

        //开启调试        

        'debug' : false,       

        //是否自动上传        

        'auto': false,

        //是否允许同时上传多个文件

        'multi': true,

        //超时时间        

        'successTimeout': 99999,

        //设置按钮上文字

        'buttonText' : '浏览',

        //附带值       

         'formData':{            

           'userid':'用户id',            

           'username':'用户名',            

           'rnd':'加密密文'       

          }, 

        //浏览按钮的高度

          height: 30,

          //浏览按钮的宽度

          width : 120,

          //不执行默认的onSelect事件        

          'overrideEvents' : ['onDialogClose'],        

          //文件选择后的容器ID        

          'queueID':'queue',        

          //服务器端使用的文件对象的名称'upload'        

          'fileObjName':'upload',        

          //上传处理程序

          swf : 'uploadify/uploadify.swf',

          uploader : 'FileUpload?action=handleRequest',

          //允许上传的文件后缀        

          'fileTypeExts':'*.jpg;*.jpge;*.gif;*.png',        

          //上传文件的大小限制        

          'fileSizeLimit':'3MB',        

          //上传数量        

          'queueSizeLimit' : 25,

          //初始化执行方法

          'onInit'   : function(instance) {

              alert('初始化执行方法 ' + instance.settings.queueID);

       },

          //每次更新上载的文件的进展        

          'onUploadProgress' : function(file, bytesUploaded, bytesTotal, totalBytesUploaded, totalBytesTotal) {            

           //有时候上传进度什么想自己个性化控制,可以利用这个方法             

           //使用方法见官方说明        

           },

          //选择上传文件后调用        

          'onSelect' : function(file) {                          

         

          },        

          //返回一个错误,选择文件的时候触发        

          'onSelectError':function(file, errorCode, errorMsg){            

           switch(errorCode) {                

            case -100:     alert("上传的文件数量已经超出系统限制的"+$('#file_upload').uploadify('settings','queueSizeLimit')+"个文件!");  break;                

            case -110:     alert("文件 ["+file.name+"] 大小超出系统限制的"+$('#file_upload').uploadify('settings','fileSizeLimit')+"大小!");break;                

            case -120:     alert("文件 ["+file.name+"] 大小异常!"); break;                

            case -130:     alert("文件 ["+file.name+"] 类型不正确!");break;           

           }        

          },

           //检测FLASH失败调用        

          'onFallback':function(){            

            alert("您未安装FLASH控件,无法上传图片!请安装FLASH控件后再试。");       

           },

           //取消上传后弹出消息框

           'onCancel' : function(file) {

           alert('这个文件' + file.name + ' 被取消');

          },

           //上传到服务器,服务器返回相应信息到data里        

           'onUploadSuccess':function(file, data, response){            

             alert(data);        

           }

        

      });

     

  }); 

   </script>

  </head>

 

  <body>

 <form>

  <div id="queue"></div>

  <input id="file_upload" name="file_upload" type="file" multiple="true">

  <a href="javascript:$('#file_upload').uploadify('upload','*')">上传文件</a>

  <a href="javascript:$('#file_upload').uploadify('stop', '*')">停止上传</a>

  <a href="javascript:$('#file_upload').uploadify('cancel')">取消上传</a>

 </form>

  </body>

</html>

/** 

* @Title: MutiFileUpload.java

* @Description: 文件的长传和下载

* @author zhengbo

* @date 2012-11-29 下午3:59:53

* @Copyright: iMos事业部.

* @version V1.0 

*/

package org.imos.manager.action;

import java.io.File;

import java.io.UnsupportedEncodingException;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.FileUploadException;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

 

/**

 * @author zhengbo

 *  commons fileupload 包装类

 *

 */

public class FileUpload extends BaseServlet {

    /** *

     * 对 request 进行处理

     * @throws UnsupportedEncodingException

     */

    public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, UnsupportedEncodingException {

     List<Map<String, String>> vars = new ArrayList<Map<String, String>>(); 

        Map<String, String> map = new HashMap<String, String>(); 

        String uploadPath = request.getSession().getServletContext().getRealPath("/")+"//upload";  //设置上传文件保存路径

        String tempuploadPath = request.getSession().getServletContext().getRealPath("/")+"//upload//buffer//"; //设置上传文件临时目录

        File uploadFile = new File(uploadPath); 

        if (!uploadFile.exists()) { 

            uploadFile.mkdirs(); 

        } 

        File tempPathFile = new File(tempuploadPath); 

         if (!tempPathFile.exists()) { 

            tempPathFile.mkdirs(); 

        } 

        try{

         //DiskFileItem工厂,主要用来设定上传文件的参数

            DiskFileItemFactory factory = new DiskFileItemFactory(); 

            factory.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kb  

            factory.setRepository(tempPathFile);// 设置缓冲区目录  

     

            ServletFileUpload upload = new ServletFileUpload(factory); 

            upload.setSizeMax(20971520); // 设置最大文件尺寸  

     

            List<FileItem> items = upload.parseRequest(request);// 得到所有的文件  

            Iterator<FileItem> i = items.iterator(); 

            while (i.hasNext()) { 

               FileItem fi = (FileItem) i.next(); 

               String fileName = fi.getName(); 

               if (fileName != null) { 

                   File fullFile = new File(fi.getName()); 

                   File savedFile = new File(uploadPath, fullFile.getName()); 

                   fi.write(savedFile); 

                   //  

                   map.put("FILENAME", fullFile.getName()); 

                   map.put("FILEPATH", "upload//"+fullFile.getName()); 

                   vars.add(map); 

               } 

            }

            System.out.print("upload succeed");

        } catch (Exception e) { 

            e.printStackTrace(); 

        }     

   }

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: