1. 程式人生 > >WebUploader-----大檔案列表上傳

WebUploader-----大檔案列表上傳

大家好   在這裡 給大家介紹一下款適用於大檔案傳輸的外掛--------------------WebUploader 

首先呢 我先給出該外掛需要的引數文件   官網地址:http://fex.baidu.com/webuploader/

下面是我寫的一個簡單的使用WebUploader的demo     水平有限 哈哈!

給出原始碼:前臺HTML佈局以及JS程式碼

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
	<meta charset="utf-8" />
    <style>

        #fileTable 
        {
            width:900px;
            border:1px solid #744e4e;
        }
            #fileTable thead tr td 
            {
                border:1px solid #744e4e;
            }
            #fileTable tbody tr  td{
             
                border:1px solid #744e4e;
            }

        .progress {
            width:400px;
        }
        .progress_div {
            height:20px;
            width:400px;
           background-color:#d1bfbf;
        }
        .progress_chiren {
            height:20px;
            width:0px;
           background-color:#a6f895;
        }
        .manager_tool {
            width:150px;
        }
        .txt_jindu {
         
          float:left;
          margin-left:170px;
        }
    </style>

   
    <script src="Scripts/jquery-1.10.2.js"></script>//注意  一定要引入版本較高的Jquery
    <link href="Content/webuploader-0.1.5(2)/webuploader.css" rel="stylesheet" />//這是資源Css路徑,引入自己的就行了
  
    <script src="Content/webuploader-0.1.5(2)/webuploader.js"></script>//Js路徑
</head>
<body>

    <table id="fileTable">

        <thead>
            <tr>
                <td>
                    檔名
                </td>
                <td>
                    檔案大小
                </td>
                <td>
                    狀態
                </td>
                <td class="progress">
                    進度
                </td>
            </tr>
        </thead>
        <tbody id="demoList">
        </tbody>
    </table>
    <div id="uploader" class="wu-example" style="float:left;">
        <div id="thelist" class="uploader-list"></div>
        <div class="btns">
            <div id="picker">選擇檔案</div>
            <button id="ctlBtn" >開始上傳</button>
        </div>
    </div>
    <script>
       
        $(function ()
        {
            uploader = WebUploader.create(
            {
                swf: 'Content/webuploader-0.1.5(2)/Uploader.swf',//注意路徑
                server: '/Home/Upload_File/',//檔案接收伺服器埠
                pick: '#picker',//上傳按鈕
                resize: false,
                method: 'post',
                chunked: true,//是否分片上傳
                //formData: { "code": "Add", "numberStr": ss },//上傳引數
                chunkRetry: 2,//重傳次數
                threads: 5,//允許幾個檔案同時長傳
                fileNumLimit: 10,//允許檔案上傳數量
                duplicate: true,//是否允許檔案重複
                chunkSize: 214748364800,//每一片的大小
            });


            //當檔案被加入佇列以後觸發。
            uploader.on('fileQueued', function (file)
            {
                var filesize = FileSize(file.size);
                var strHtml = '<tr  id=' + file.id + '><td>' + file.name + '</td><td>' + filesize + '</td><td><span class="gray:">等待上傳</span></td><td><div class="progress_div"><span class="txt_jindu">0%</span><div class="progress_chiren"></div></div></td></tr>';
                $("#demoList").append(strHtml);
            });

         
            //上傳過程中觸發,攜帶上傳進度。
            uploader.on('uploadProgress', function (file, percentage)
            {
                var state = "正在上傳";
                var per = percentage * 100;
                per = Math.round(per * 100) / 100;//計算百分比

                $("#" + file.id).children().eq(3).children().eq(0).children().eq(0).html(per + '%');//賦值百分比

                $("#" + file.id).children().eq(3).children().eq(0).children().eq(1).css("width", per + '%');//動態改變進度條寬度
                if (per < 100) {
                    state = "上傳中";
                    $("#" + file.id).children().eq(2).css("color", "red");
                }
                $("#" + file.id).children().eq(2).html(state);//改變狀態
            });

            // 當檔案上傳失敗時觸發。
            uploader.on('uploadError', function (file)
            {
                $("#" + file.id).children().eq(2).css("color", "red");
                $("#" + file.id).children().eq(2).html("上傳失敗");//改變狀態
            });



           // 當檔案上傳成功時觸發。
            uploader.on('uploadSuccess', function (file)
            {
                $("#" + file.id).children().eq(2).css("color", "green");
                $("#" + file.id).children().eq(2).html("上傳成功");//改變狀態
            });


            //上傳按鈕
            $('#ctlBtn').on('click', function ()
            {
                    uploader.upload();    
            });
        });
        //計算檔案大小
        function FileSize(filesize) {
            var fileSize = 0;

            if (filesize > 1024 * 1024) {
                fileSize = (Math.round(filesize * 100 / (1024 * 1024)) / 100).toString() + 'MB';
            }
            else {
                fileSize = (Math.round(filesize * 100 / 1024) / 100).toString() + 'KB';
            }
            return fileSize;
        }
    </script>
</body>
</html>

後臺使用.netMVC做的 檔案接收服務介面

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

namespace PrcticeDemo.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            return View();
        }


        
        public void Upload_File()
        {
            try
            {
                System.Web.HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
                if (files.Count == 0)
                {
                    
                }
                for (int i = 0; i < files.AllKeys.Count(); i++)
                {

                    if (files[i].FileName.Length > 0)
                    {
                        System.Web.HttpPostedFile postedfile = files[i];

                        string filePath = "";

                        var ext = Path.GetExtension(postedfile.FileName);

                        var fileName = DateTime.Now.Ticks.ToString() + ext;

                        // 組合檔案儲存的相對路徑
                        filePath = "/Content/Upload/Temp/" + fileName;
                        var path = Server.MapPath(filePath);
                        postedfile.SaveAs(path);                        
                    }
                }
            }
            catch (Exception ex)
            {
                string error = ex.Message;
            }
          
        }
    }
}

若是使用.net的朋友呢 一定要注意Web配置檔案,因為IIS會限制檔案上傳的大小或者請求的速度

我們需要對配置文件進行簡單的配置

首先:在 <system.webServer> </system.webServer>節點中加入

<security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="2072576000" />
      </requestFiltering>
</security>

其次:在 <system.web></system.web>節點下加入

 <httpRuntime targetFramework="4.5.2" executionTimeout="90" maxRequestLength="2097151" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" />

原始碼連結:https://download.csdn.net/download/bigbossc/10585774

好了  我的分享到此結束了.

碼字不易  點個關注唄!