最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

asp.net批量多選文件上傳解決方案

 更新時間:2022年04月27日 09:53:13   投稿:lijiao  
這篇文章主要介紹了asp.net批量多選文件上傳解決方案,基于flex開發(fā)的一個多選上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

多選文件上傳,已經(jīng)非常多了,選擇性多了可能有時候要比較下哪個更合適,結(jié)合到項目中使用更方便才是最重要的。很多的多選上傳基本上都是調(diào)用的swf文件,確實用flash 或flex開發(fā)一個多選上傳的功能很方便,比如flex里內(nèi)置的FileReferenceList對象本身就支持文件的多選,有這個的話就方便多了,下面要說的主要也是基于flex開發(fā)的一個多選上傳功能。

主要實現(xiàn)的功能如下:

一、選擇多個文件上傳并顯示單個文件的上傳進(jìn)度
二、顯示所有文件總的上傳進(jìn)度
三、顯示所有上傳文件的總大小
四、上傳前可以刪除任意選定一個或多個文件(按住Ctrl或Shift鍵)
五、ASP.NET頁面調(diào)用生成的swf文件異步上傳到服務(wù)器

先看下演示的截圖,如下:

   

大致功能和上面截圖一樣,下面主要說下ASP.NET里怎么調(diào)用,F(xiàn)LEX的里面代碼我這里就不詳細(xì)說明了,F(xiàn)LEX里面的代碼不多,文章后面提供下載,用flex3.0或4.0可以打開運行。

其中有一個地方說明一下,就是在多選刪除的地方,為了保證隨意多選刪除的正確性,需要把選定的索引項降序排序,每次從數(shù)組最大處刪除,避免循環(huán)刪除時索引超界。

function deleteItem():void{
 var selectItems:Array = process_list.selectedItems;
 var selectIndex:Array = process_list.selectedIndices;
 selectIndex = selectIndex.sort(2);//索引按降序排序
 var iCount:int = selectItems.length;
 var sizeMum:Number = 0;
 for(var i:int=0;i<iCount;i++){
  info.splice(selectIndex[i],1);
  fileRef.fileList.splice(selectIndex[i],1);//移除的選擇項按索引從大到小移除,以便移除過程中索引不超界
 }
 for(var j:Number=0;j<fileRef.fileList.length;j++){      
  sizeMum+=fileRef.fileList[j].size;     
 }   
 process_list.dataProvider = info;
 tip_txt.text="共"+fileRef.fileList.length+"個文件 "+(sizeMum/(1024*1024)).toFixed(4).toString()+"MB";
      
 if(info.length<=0){
  delete_btn.enabled = false;
 }     
}

調(diào)用其實也比較簡單,新建一個asp教程x頁面加載生成的swf文件,這里生成的文件名是upload.swf,利用flex內(nèi)置的swfobject.js里面的方法加載,如下:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
 <title>無標(biāo)題頁</title>  
   <style type="text/css教程" media="screen"> 
   html, body { height:100%; }
   body { margin:0; padding:0; overflow:auto; text-align:center; 
     background-color: #ffffff; } 
   #flashContent { display:none; }
  </style>
   
  <script type="text/網(wǎng)頁特效" src="swfobject.js"></script> 
  <script type="text/javascript" >

   var swfVersionStr = "10.0.0";
   var xiSwfUrlStr = "playerProductInstall.swf";
   var flashvars = {};
   flashvars.url = "SaveFile.aspx?Param=ID|100,NAME|測試用戶";
   var params = {};
   params.quality = "high";
   params.bgcolor = "#ffffff";
   params.allowscriptaccess = "sameDomain";
   params.allowfullscreen = "true";
   var attributes = {};
   attributes.id = "upload";
   attributes.name = "upload";
   attributes.align = "middle";
   swfobject.embedSWF(
    "upload.swf", "flashContent", 
    "587", "370", 
    swfVersionStr, xiSwfUrlStr, 
    flashvars, params, attributes);
 
   function uploadCompelete(){
    //完成后的操作,如頁面跳轉(zhuǎn)或關(guān)閉當(dāng)前頁
    document.getElementById('btnUpload').disabled = false;
   }
   function submitForm(){
    thisMovie("upload").uploadfile();
   }
   function thisMovie(movieName) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
     return window[movieName];
    } else {
     return document[movieName];
    }
   }
   function disabledButton()
    {
    document.getElementById('btnUpload').disabled = true;
    }
 
  </script>
</head>
<body>
 <div id="flashContent" style="width:587px; height:380px">
   </div>
  <br />
  <input id="btnUpload" style="width: 71px" type="button" value="上 傳" onclick="submitForm()" />
</body>
</html>
  如上,頁面放置一個按鈕,執(zhí)行upload.swf里面的uploadfile方法,在flex里面其實是回調(diào)了uploadHandler方法:
//===================
// 點擊上傳按鈕
//===================
internal function uploadHandler():void{
 if(uploadFile_num!=0) return;
 if(process_list.dataProvider==null || info.length<=0){
  Alert.show("您還未選擇文件!","提示信息");
  return;
 }
 else
 {
  ExternalInterface.call("disabledButton"); //點上傳后禁用按鈕 
 }
 for(var i:Number=0;i<fileRef.fileList.length;i++){    
  upload_size_total+=fileRef.fileList[i].size;          
 }         
 uploadfile(uploadFile_num); 
 add_btn.enabled = false; //點上傳后禁用瀏覽按鈕 
 delete_btn.enabled = false;//點上傳后禁用刪除按鈕 
}
 
  SaveFile.aspx頁面主要是接收并存儲文件,如下:
protected void Page_Load(object sender, EventArgs e)
{
 //string param = Request["Param"];
 string path = Server.MapPath("files/");
 if (!Directory.Exists(path))
 {
  Directory.CreateDirectory(path);
 }
 //HttpFileCollection files = Request.Files;
 //string fileName = string.Empty;
 //for (int i = 0; i < files.Count; i++)
 //{
 // fileName = Path.GetFileName(files[i].FileName).ToLower();
 // files[i].SaveAs(path + fileName);
 //}
 HttpPostedFile file = Request.Files["Filedata"]; //文件是一個一個異步提交過來,所以不需要循環(huán)文件集合
 if (file != null && file.ContentLength > 0)
 {
  file.SaveAs(path+Request.Form["filename"]);
 }
}

畢竟不是以文件流的形式接收和存儲,所以如果是上傳大文件的話,可以看到顯示頁面已經(jīng)上傳完成100%,但是到這個處理存儲頁面會停頓一會,接收并存儲完成后前臺頁面才會反應(yīng)過來。

還有一點要提一下,就是如果傳遞的參數(shù)包含中文的話,需要config編碼格式為utf-8格式,但有原先的系統(tǒng)可能是gb2312格式的,改成utf-8可能對系統(tǒng)有影響,可以單獨建一個webconfig,上傳的時候就讀單獨的config。

以上就是asp.net批量多選文件上傳代碼,希望可以解決大家進(jìn)行ASP.NET上傳多文件時遇到的問題。

相關(guān)文章

  • 創(chuàng)建一個ASP.NET MVC5項目的實現(xiàn)方法(圖文)

    創(chuàng)建一個ASP.NET MVC5項目的實現(xiàn)方法(圖文)

    這篇文章主要介紹了創(chuàng)建一個ASP.NET MVC 5項目,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • ASP.NET實現(xiàn)進(jìn)度條效果

    ASP.NET實現(xiàn)進(jìn)度條效果

    這篇文章主要為大家詳細(xì)介紹了ASP.NET實現(xiàn)簡單的進(jìn)度條效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 在ASP.Net Web Forms中使用依賴注入的步驟

    在ASP.Net Web Forms中使用依賴注入的步驟

    這篇文章主要介紹了在ASP.Net Web Forms中使用依賴注入的步驟,幫助大家更好的理解和學(xué)習(xí)使用.NET技術(shù),感興趣的朋友可以了解下
    2021-03-03
  • ASP.NET實現(xiàn)圖書管理系統(tǒng)的步驟詳解

    ASP.NET實現(xiàn)圖書管理系統(tǒng)的步驟詳解

    這篇文章主要介紹了ASP.NET圖書管理系統(tǒng)簡單實現(xiàn)步驟,本文通過實例截圖展示的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • .NET使用原生方法實現(xiàn)文件壓縮和解壓的詳細(xì)過程

    .NET使用原生方法實現(xiàn)文件壓縮和解壓的詳細(xì)過程

    這篇文章主要介紹了.NET使用原生方法實現(xiàn)文件壓縮和解壓,本文我們主要講的是如何使用.NET原生方法System.IO.Compression命名空間中的類來對文件和文件夾進(jìn)行壓縮或解壓縮(壓縮格式.zip文件格式),需要的朋友可以參考下
    2024-06-06
  • ASP.NET Core對Controller進(jìn)行單元測試的完整步驟

    ASP.NET Core對Controller進(jìn)行單元測試的完整步驟

    這篇文章主要給大家介紹了關(guān)于ASP.NET Core對Controller進(jìn)行單元測試的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用ASP.NET Core具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • ADO.NET獲取數(shù)據(jù)(DataSet)同時獲取表的架構(gòu)實例

    ADO.NET獲取數(shù)據(jù)(DataSet)同時獲取表的架構(gòu)實例

    下面小編就為大家分享一篇ADO.NET獲取數(shù)據(jù)(DataSet)同時獲取表的架構(gòu)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • asp.net DataTable導(dǎo)出Excel自定義列名的方法

    asp.net DataTable導(dǎo)出Excel自定義列名的方法

    本文分享了asp.net DataTable導(dǎo)出Excel 自定義列名的具體實現(xiàn)方法,步驟清晰,代碼詳細(xì),需要的朋友可以參考借鑒,下面就跟小編一起來看看吧
    2016-12-12
  • 輕量級ORM框架Dapper應(yīng)用之實現(xiàn)DTO

    輕量級ORM框架Dapper應(yīng)用之實現(xiàn)DTO

    本文詳細(xì)講解了使用Dapper實現(xiàn)DTO的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • ASP.NET Core實現(xiàn)AES-GCM加密算法

    ASP.NET Core實現(xiàn)AES-GCM加密算法

    這篇文章介紹了ASP.NET Core實現(xiàn)AES-GCM加密的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07

最新評論

奉新县| 克山县| 蒙阴县| 延吉市| 库车县| 鄂托克旗| 米易县| 定南县| 额济纳旗| 博爱县| 东光县| 林芝县| 铁岭市| 德安县| 寿阳县| 遂宁市| 宕昌县| 灵武市| 盘锦市| 富川| 龙里县| 文山县| 深州市| 石首市| 中西区| 三河市| 友谊县| 亳州市| 武功县| 平塘县| 甘洛县| 汶上县| 行唐县| 贡觉县| 滁州市| 仁布县| 东方市| 鸡泽县| 南漳县| 静海县| 海南省|