uploadify+asp.net(C#) 批量上傳大檔案執行個體源碼

來源:互聯網
上載者:User

最近項目需求要批量上傳大檔案,項目是用asp.net(C#)開發的,uploadify上傳組件個人認為非常優秀,支援asp.net、php等,本文我們就用uploadify實現批量上傳大檔案。


效果圖:


前端代碼帶注釋說明:

<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    <title></title>    <link href="css/style.css" rel="stylesheet" type="text/css" />    <link href="uploadify/uploadify.css" rel="stylesheet" type="text/css" />    <script src="js/jquery.js" type="text/javascript"></script>    <script src="uploadify/jquery.uploadify.min.js" type="text/javascript"></script>    <script type="text/javascript">        $(function () {            $("#uploadify").uploadify({                //指定swf檔案                'swf': 'uploadify/uploadify.swf',                //幕後處理的頁面                'uploader': 'uploadfile.ashx',                //按鈕顯示的文字                'buttonText': '瀏 覽',                //上傳檔案的類型  預設為所有檔案    'All Files'  ;  '*.*'                //在瀏覽視窗底部的檔案類型下拉式功能表中顯示的文本                'fileTypeDesc': 'Image Files',                //允許上傳的檔案尾碼                'fileTypeExts': '*.gif; *.jpg; *.png;*.zip',                //發送給背景其他參數通過formData指定                //'formData': { 'someKey': 'someValue', 'someOtherKey': 1 },                //上傳檔案頁面中,你想要用來作為檔案隊列的元素的id, 預設為false  自動產生,  不帶#                //'queueID': 'fileQueue',                'fileSizeLimit': 204800000,                //選擇檔案後自動上傳                'auto': false,                //設定為true將允許多檔案上傳                'multi': true,                //上傳成功                'onUploadSuccess': function (file, data, response) {                    var obj = (new Function("return " + data))();//【json字串轉為json對象。】                    $("#rep").append("<span>" + obj.Msg + "!</span>");//data為後台返回結果。                }            });        });    </script></head><body>    <form id="form1" runat="server">        <div>            <div id="fileQueue">            </div>            <input type="file" name="uploadify" id="uploadify" />            <p>                <a href="javascript:$('#uploadify').uploadify('upload','*')">上傳</a>|             <a href="javascript:$('#uploadify').uploadify('cancel','*')">取消上傳</a>            </p>        </div>        <br />        <div id="rep">返回的結果:</div>    </form></body></html>


啟用批量上傳:

javascript:$('#uploadify').uploadify('upload','*'):啟用批量上傳。

關於大檔案上傳

在調試上傳過程中,發現大檔案(大於20M)就出現500錯誤了,伺服器配置是可以上傳500M的檔案。我就想起應該是webconfig的請求內容大小的限制問題。應該按照如下設定:

佈建要求資料大小。

<system.web>    <compilation debug="true" targetFramework="4.0" />    <!--設定大檔案請求-->    <httpRuntime maxRequestLength="1073741824" executionTimeout="3600" /></system.web>


伺服器端代碼如下:

public void ProcessRequest(HttpContext context){    context.Response.ContentType = "text/plain";    //接收上傳後的檔案    HttpPostedFile file = context.Request.Files["Filedata"];    //其他參數    //string somekey = context.Request["someKey"];    //string other = context.Request["someOtherKey"];    //擷取檔案的儲存路徑    string uploadPath =        HttpContext.Current.Server.MapPath("UploadImages" + "\\");    //判斷上傳的檔案是否為空白    if (file != null)    {        if (!Directory.Exists(uploadPath))        {            Directory.CreateDirectory(uploadPath);        }        //儲存檔案        file.SaveAs(uploadPath + DateTime.Now.ToString("yyyyMMddHHmmsss") + file.FileName.Substring(file.FileName.LastIndexOf(".") - 1));        ResponseModel rm = new ResponseModel();        rm.Id = 1;        rm.state = 0;        rm.Msg = "成功";        context.Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(rm));//即傳給前台的data    }    else    {        context.Response.Write("0"); //即傳給前台的data    }}public class ResponseModel{    public int Id { get; set; }    public int state { get; set; }    public string Msg { get; set; }}


其中上傳成功後的返回對象可採用json序列化。然後返回給用戶端調用。而在用戶端調用的時候,建議先給返回的json字串轉換為json對象,這樣可以方便使用。

如何處理上傳結果返回的資料:

var obj = (new Function("return " + data))();//data為返回的json字串


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.