jQuery Uploadify在ASP.NET MVC3中的使用


1、Uploadify簡介

        Uploadify是基於jQuery的一種上傳插件,支持多文件、帶進度條顯示上傳,在項目開發中常被使用。

        Uploadify官方網址:http://www.uploadify.com/

 

2、ASP.NET MVC3中的使用Uploadify

       搭建ASP.NET MVC3解決方案如下圖,其中使用到的Uploadify為3.1版本:

 

  1>、簡單示例

      _Layout.cshtml代碼:

<!DOCTYPE html>
<html>
<head>
    <title>@ViewBag.Title</title>
    @RenderSection("Header")
</head>

<body>
    @RenderBody()
</body>
</html>

      Index.cshtml代碼:

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@section Header{
    <link href="@Url.Content("~/Scripts/uploadify-v3.1/uploadify.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-1.8.1.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/uploadify-v3.1/jquery.uploadify-3.1.min.js")" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            $('#file_upload').uploadify({
                'swf'        : '@Url.Content("~/Scripts/uploadify-v3.1/uploadify.swf")',
                'uploader'   : '/Home/Upload'
            });
        });
    </script>
    <style type="text/css">
        body
        {
            font-size: 12px;
        }
        .tip
        {
            height: 20px;
            border-bottom: 1px solid #CCC;
            margin-bottom: 10px;
        }
    </style>
}
<div class="tip">
    jQuey Uploadify上傳文件示例:
</div>
<input type="file" id="file_upload" name="file_upload" />

        HomeController.cs代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

using System.IO;

namespace WebUI.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/

        public ActionResult Index()
        {
            return View();
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public JsonResult Upload(HttpPostedFileBase fileData)
        {
            if (fileData != null)
            {
                try
                {
                    // 文件上傳后的保存路徑
                    string filePath = Server.MapPath("~/Uploads/");
                    if (!Directory.Exists(filePath))
                    {
                        Directory.CreateDirectory(filePath);
                    }
                    string fileName = Path.GetFileName(fileData.FileName);// 原始文件名稱
                    string fileExtension = Path.GetExtension(fileName); // 文件擴展名
                    string saveName = Guid.NewGuid().ToString() + fileExtension; // 保存文件名稱

                    fileData.SaveAs(filePath + saveName);

                    return Json(new { Success = true, FileName = fileName, SaveName = saveName });
                }
                catch (Exception ex)
                {
                    return Json(new { Success = false, Message = ex.Message }, JsonRequestBehavior.AllowGet);
                }
            }
            else
            {

                return Json(new { Success = false, Message = "請選擇要上傳的文件!" }, JsonRequestBehavior.AllowGet);
            }
        }
    }
}

        上傳效果圖:

 

        2>、設置上傳圖片大小

        ASP.NET MVC默認情況下,允許上傳的文件大小最大為4MB。因此在默認情況下,Uploadify也只能最大上傳4MB大小的文件,超過范圍則會IO報錯提示無法上傳。

        修改Web.config設置允許上傳的最大文件大小:

<system.web>
  <!--設置最大允許上傳文件大小1G-->
  <httpRuntime maxRequestLength= "102400" executionTimeout= "60" />
</system.web>

  修改最大上傳文件大小后效果:

        3>、Uploadify常用屬性設置

        auto:是否選擇文件后自動上傳,默認為true。

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@section Header{
    <link href="@Url.Content("~/Scripts/uploadify-v3.1/uploadify.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-1.8.1.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/uploadify-v3.1/jquery.uploadify-3.1.min.js")" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            $('#file_upload').uploadify({
                'auto'       : false,
                'swf'        : '@Url.Content("~/Scripts/uploadify-v3.1/uploadify.swf")',
                'uploader'   : '/Home/Upload'
            });
        });
    </script>
    <style type="text/css">
        body
        {
            font-size: 12px;
        }
        .tip
        {
            height: 20px;
            border-bottom: 1px solid #CCC;
            margin-bottom: 10px;
        }
    </style>
}
<div class="tip">
    jQuey Uploadify上傳文件示例:
</div>
<div>
    <input type="file" id="file_upload" name="file_upload" />
</div>
<div>
    <a href="javascript:$('#file_upload').uploadify('upload');">上傳</a>
</div>

 

        buttonText:設置上傳按鈕顯示文字。

<script type="text/javascript">
    $(function () {
        $('#file_upload').uploadify({
            'buttonText'       : '請選擇上傳文件',
            'swf'        : '@Url.Content("~/Scripts/uploadify-v3.1/uploadify.swf")',
            'uploader'   : '/Home/Upload'
        });
    });
</script>

 

        buttonImage:設置上傳按鈕背景圖片。

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@section Header{
    <link href="@Url.Content("~/Scripts/uploadify-v3.1/uploadify.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-1.8.1.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/uploadify-v3.1/jquery.uploadify-3.1.min.js")" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            $('#file_upload').uploadify({
                'buttonImage': '@Url.Content("~/Scripts/uploadify-v3.1/browse-btn.png")',
                'swf': '@Url.Content("~/Scripts/uploadify-v3.1/uploadify.swf")',
                'uploader': '/Home/Upload'
            });
        });
    </script>
    <style type="text/css">
        body
        {
            font-size: 12px;
        }
        .tip
        {
            height: 20px;
            border-bottom: 1px solid #CCC;
            margin-bottom: 10px;
        }
        .uploadify-button
        {
            background-color: transparent;
            border: none;
            padding: 0;
        }
        .uploadify:hover .uploadify-button
        {
            background-color: transparent;
        }
    </style>
}
<div class="tip">
    jQuey Uploadify上傳文件示例:
</div>
<div>
    <input type="file" id="file_upload" name="file_upload" />
</div>

 

        multi:是否允許一次選擇多個文件一起上傳,默認為true。

<script type="text/javascript">
    $(function () {
        $('#file_upload').uploadify({
            'buttonImage': '@Url.Content("~/Scripts/uploadify-v3.1/browse-btn.png")',
            multi: true,
            'swf': '@Url.Content("~/Scripts/uploadify-v3.1/uploadify.swf")',
            'uploader': '/Home/Upload'
        });
    });
</script>

         fileTypeDesc:設置允許上傳圖片格式描述;

         fileTypeExts:設置允許上傳圖片格式。

<script type="text/javascript">
    $(function () {
        $('#file_upload').uploadify({
            'buttonImage': '@Url.Content("~/Scripts/uploadify-v3.1/browse-btn.png")',
            'fileTypeDesc': '圖片文件',
            'fileTypeExts': '*.gif; *.jpg; *.png', 
            'swf': '@Url.Content("~/Scripts/uploadify-v3.1/uploadify.swf")',
            'uploader': '/Home/Upload'
        });
    });
</script>

 

        removeCompleted:設置已完成上傳的文件是否從隊列中移除,默認為true。

$(function() {
    $("#file_upload").uploadify({
        'removeCompleted' : false,
        'swf'             : '/uploadify/uploadify.swf',
        'uploader'        : '/uploadify/uploadify.php'
    });
});

        queueSizeLimit:設置上傳隊列中同時允許的上傳文件數量,默認為999。

$(function() {
    $("#file_upload").uploadify({
        'queueSizeLimit' : 1,
        'swf'            : '/uploadify/uploadify.swf',
        'uploader'       : '/uploadify/uploadify.php'
    });
});

       uploadLimit:設置允許上傳的文件數量,默認為999。

$(function() {
    $("#file_upload").uploadify({
        'swf'         : '/uploadify/uploadify.swf',
        'uploader'    : '/uploadify/uploadify.php',
        'uploadLimit' : 1
    });
});

 

        4>、Uploadify常用事件設置

        onUploadComplete:單個文件上傳完成時觸發事件。

$(function() {
    $("#file_upload").uploadify({
        'swf'              : '/uploadify/uploadify.swf',
        'uploader'         : '/uploadify/uploadify.php',
        'onUploadComplete' : function(file) {
            alert('The file ' + file.name + ' finished processing.');
        }
    });
});

        onQueueComplete:隊列中全部文件上傳完成時觸發事件。

$(function() {
    $("#file_upload").uploadify({
        'swf'      : '/uploadify/uploadify.swf',
        'uploader' : '/uploadify/uploadify.php',
        'onQueueComplete' : function(queueData) {
            alert(queueData.uploadsSuccessful + ' files were successfully uploaded.');
        }
    });
});

        onUploadSuccess:單個文件上傳成功后觸發事件。

<script type="text/javascript">
    $(function () {
        $('#file_upload').uploadify({
            'buttonImage': '@Url.Content("~/Scripts/uploadify-v3.1/browse-btn.png")',
            'swf': '@Url.Content("~/Scripts/uploadify-v3.1/uploadify.swf")',
            'uploader': '/Home/Upload',
            'onUploadSuccess': function (file, data, response) {
                eval("data=" + data);
                alert('文件 ' + file.name + ' 已經上傳成功,並返回 ' + response + ' 保存文件名稱為 ' + data.SaveName);
            }
        });
    });
</script>

        4>、Uploadify常用方法

         upload:上傳文件

         cancel:取消上傳

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@section Header{
    <link href="@Url.Content("~/Scripts/uploadify-v3.1/uploadify.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-1.8.1.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/uploadify-v3.1/jquery.uploadify-3.1.min.js")" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            $('#file_upload').uploadify({
                'auto'         : false,
                'buttonImage'  : '@Url.Content("~/Scripts/uploadify-v3.1/browse-btn.png")',
                'swf'          : '@Url.Content("~/Scripts/uploadify-v3.1/uploadify.swf")',
                'uploader'     : '/Home/Upload'
            });
        });
    </script>
    <style type="text/css">
        body
        {
            font-size: 12px;
        }
        .tip
        {
            height: 20px;
            border-bottom: 1px solid #CCC;
            margin-bottom: 10px;
        }
        .uploadify-button
        {
            background-color: transparent;
            border: none;
            padding: 0;
        }
        .uploadify:hover .uploadify-button
        {
            background-color: transparent;
        }
    </style>
}
<div class="tip">
    jQuey Uploadify上傳文件示例:
</div>
<div>
    <input type="file" id="file_upload" name="file_upload" />
</div>
<div>
    <a href="javascript:$('#file_upload').uploadify('upload');">上傳第一個</a>
    <a href="javascript:$('#file_upload').uploadify('upload','*');">上傳隊列</a> 
    <a href="javascript:$('#file_upload').uploadify('cancel');">取消第一個</a>
    <a href="javascript:$('#file_upload').uploadify('cancel', '*');">取消隊列</a>
</div>

 

3、示例代碼附件

jQueryUploadifyDemo.rar


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM