uploadify实现文件上传

<%@ 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(); 
        }     
   }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值