Uploadify文件上传

一、简介

   Uploadify 是一种基于html5 或 flash的多文件上传的jQuery插件。Uploadify可以支持多种定制。它是一种异步的文件上传插件。下载网站为http://www.uploadify.com/。这里使用的是Uploadify Version 3.2.1版本。下载解压后,目录如下所示:

  使用Uploadify需要加入如下js

<script src="jquery1.10.2 .min.js" type="text/javascript"></script> <!-- 这里jquery 版本问1.10.2 -->
<script src="jquery.uploadify.min.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="uploadify.css"> <!-- 样式文件 -->

二、示例

   网页示例如下:

  1 <%@ page contentType="text/html; charset=UTF-8"%>
  2 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
  3 <c:set var="ctx" value="${pageContext.request.contextPath}" />
  4 <!DOCTYPE HTML>
  5 <html>
  6 <head>
  7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  8 <title>UploadiFive Test</title>
  9 <script src="${ctx}/index/uploadify/jquery1.10.2 .min.js" type="text/javascript"></script>
 10 <script src="${ctx}/index/uploadify/jquery.uploadify.min.js" type="text/javascript"></script>
 11 <style type="text/css">
 12 body {
 13     font: 13px Arial, Helvetica, Sans-serif;
 14 }
 15 .uploadify {
 16     position: relative;
 17     margin-bottom: 1em;
 18 }
 19 .uploadify-button {
 20     background-color: #505050;
 21     background-image: linear-gradient(bottom, #505050 0%, #707070 100%);
 22     background-image: -o-linear-gradient(bottom, #505050 0%, #707070 100%);
 23     background-image: -moz-linear-gradient(bottom, #505050 0%, #707070 100%);
 24     background-image: -webkit-linear-gradient(bottom, #505050 0%, #707070 100%);
 25     background-image: -ms-linear-gradient(bottom, #505050 0%, #707070 100%);
 26     background-image: -webkit-gradient(
 27         linear,
 28         left bottom,
 29         left top,
 30         color-stop(0, #505050),
 31         color-stop(1, #707070)
 32     );
 33     background-position: center top;
 34     background-repeat: no-repeat;
 35     -webkit-border-radius: 30px;
 36     -moz-border-radius: 30px;
 37     border-radius: 30px;
 38     border: 2px solid #808080;
 39     color: #FFF;
 40     font: bold 12px Arial, Helvetica, sans-serif;
 41     text-align: center;
 42     text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
 43     width: 100%;
 44 }
 45 .uploadify:hover .uploadify-button {
 46     background-color: #606060;
 47     background-image: linear-gradient(top, #606060 0%, #808080 100%);
 48     background-image: -o-linear-gradient(top, #606060 0%, #808080 100%);
 49     background-image: -moz-linear-gradient(top, #606060 0%, #808080 100%);
 50     background-image: -webkit-linear-gradient(top, #606060 0%, #808080 100%);
 51     background-image: -ms-linear-gradient(top, #606060 0%, #808080 100%);
 52     background-image: -webkit-gradient(
 53         linear,
 54         left bottom,
 55         left top,
 56         color-stop(0, #606060),
 57         color-stop(1, #808080)
 58     );
 59     background-position: center bottom;
 60 }
 61 .uploadify-button.disabled {
 62     background-color: #D0D0D0;
 63     color: #808080;
 64 }
 65 .uploadify-queue {
 66     margin-bottom: 1em;
 67 }
 68 .uploadify-queue-item {
 69     background-color: #F5F5F5;
 70     -webkit-border-radius: 3px;
 71     -moz-border-radius: 3px;
 72     border-radius: 3px;
 73     font: 11px Verdana, Geneva, sans-serif;
 74     margin-top: 5px;
 75     max-width: 350px;
 76     padding: 10px;
 77 }
 78 .uploadify-error {
 79     background-color: #FDE5DD !important;
 80 }
 81 .uploadify-queue-item .cancel a {
 82     background: url('../uploadify/uploadify-cancel.png') 0 0 no-repeat;
 83     float: right;
 84     height:    16px;
 85     text-indent: -9999px;
 86     width: 16px;
 87 }
 88 .uploadify-queue-item.completed {
 89     background-color: #E5E5E5;
 90 }
 91 .uploadify-progress {
 92     background-color: #E5E5E5;
 93     margin-top: 10px;
 94     width: 100%;
 95 }
 96 .uploadify-progress-bar {
 97     background-color: #0099FF;
 98     height: 3px;
 99     width: 1px;
100 }
101 </style>
102 </head>
103 
104 <body>
105     <h1>Uploadify Demo</h1>
106     <form>
107         <div id="queue"></div>
108         <input id="file_upload" name="file_upload" type="file" multiple="true">
109         <input type="button" value="开始上传" onclick="startupload();" />
110     </form>
111 
112 <script type="text/javascript">
113 var upload;
114 $(function() {
115     upload = $('#file_upload').uploadify({
116         'auto'     : false,
117         'fileTypeDesc' : '图片文件',
118         'fileTypeExts' : '*.gif; *.jpg; *.png',
119         'buttonText' : '选择文件...',
120         'width'    : 300,
121         'multi': true,
122         'formData'     : {
123             'timestamp' : 'ddd',
124             'token'     : '/sdf/fdsfs'
125         },
126         'fileDataName' : 'Filename',//与后端获取文件的名称一致
127         'cancelImg'      : 'images/cancel.png',  
128         'method'   : 'post',
129         'swf'      : '${ctx}/index/uploadify/uploadify.swf',
130         'uploader' : '${ctx}/control/file/upload.action',
131         'button_image_url':'${ctx}/index/uploadify/', //'overrideEvents' : ['onSelectError', 'onDialogClose'],重写事件,从而自定义错误消息显示
132         'requeueErrors' : true,
133         'onSelectError' : function() {
134             alert('请选择图片文件');
135             return false;
136         },
137         'onSelect' : function(file) {
138             console.log('The file ' + file.name + ' was added to the queue.');
139         },
140         'onUploadStart' : function(file) {
141             console.log('开始上传: ' + file.name);
142         },
143         'onUploadComplete' : function(file) {
144             console.log('文件 ' + file.name + ' 上传成功');
145         },
146         'onUploadSuccess' : function(file, data, response) {
147             console.log('文件 ' + file.name + ' 上传成功  相应数据为: ' + response + ':' + data);
148             if(data){
149                 alert("上传成功!");
150             }else{
151                 alert("上传失败,请重新上传!");
152             }
153         }
154     });
155 });
156 
157 function startupload(){
158     upload.uploadify('upload','*');
159 }
160 </script>
161 </body>
162 </html>

  下载地址:点击下载 。

  后端处理代码如下:

package com.test.web.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.Calendar;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.io.IOUtils;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

@Controller
@Scope("prototype")
@RequestMapping("/control/file")
public class FileUpload {

    @RequestMapping(value = "upload", method = RequestMethod.POST)
    @ResponseBody
    public boolean test(HttpServletRequest request) throws UnsupportedEncodingException {
        String path = request.getSession().getServletContext().getRealPath("");
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        request.setCharacterEncoding("UTF-8");
        path = String.format("%s\\%s\\%s\\%s\\%s\\%s", path, "file", "upload", calendar.get(calendar.YEAR),
                calendar.get(calendar.MONTH), calendar.get(calendar.DAY_OF_MONTH));
        File filepath = new File(path);
        if (!filepath.exists()) {
            filepath.mkdirs();
        }

        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        // 获得文件
        MultipartFile multipartFile = multipartRequest.getFile("Filedata");//与前端设置的fileDataName属性值一致
        String filename = multipartFile.getOriginalFilename();// 文件名称

        OutputStream os = null;
        InputStream is = null;
        File uploadFile = null;
        try {
            is = multipartFile.getInputStream();
            if (is != null) {
                uploadFile = new File(filepath, System.currentTimeMillis() + filename.substring(filename.lastIndexOf(".") - 1));
                os = new FileOutputStream(uploadFile);
                IOUtils.copy(is, os);
                os.flush();
            }
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        } finally {
            IOUtils.closeQuietly(os);
            IOUtils.closeQuietly(is);
        }
        return true;
    }
}

posted on 2015-05-06 16:33  烟火_  阅读(990)  评论(0编辑  收藏  举报

导航