asp.net 대량 다 중 파일 업로드 솔 루 션

파일 을 많이 선택 하여 업로드 하 는 것 은 이미 매우 많 습 니 다.선택 이 많 으 면 어떤 것 이 더 적합 한 지 비교 하고 프로젝트 에 결합 하여 사용 하 는 것 이 가장 편리 한 것 이 중요 합 니 다.많은 다 중 선택 업로드 가 기본적으로 호출 된 swf 파일 입 니 다.플래시 나 flex 로 다 중 선택 업로드 기능 을 개발 하 는 것 이 편리 합 니 다.예 를 들 어 flex 에 내 장 된 FileReference List 대상 자체 가 파일 의 다 중 선택 을 지원 합 니 다.이것 이 있 으 면 훨씬 편리 합 니 다.다음은 주로 flex 를 바탕 으로 개발 한 다 중 선택 업로드 기능 입 니 다.
주로 실현 되 는 기능 은 다음 과 같다.
1.여러 파일 을 선택 하여 업로드 하고 한 파일 의 업로드 진 도 를 표시 합 니 다.
2.모든 파일 의 전체 업로드 진 도 를 표시 합 니 다.
3.모든 업로드 파일 의 총 크기 표시
4.업로드 하기 전에 하나 이상 의 파일 을 삭제 할 수 있 습 니 다.(Ctrl 또는 Shift 키 를 누 르 면)
5.ASP.NET 페이지 호출 생 성 된 swf 파일 을 서버 에 비동기 로 업로드 합 니 다.
먼저 프레젠테이션 의 캡 처 를 보 겠 습 니 다.다음 과 같 습 니 다.
   




대체로 위 캡 처 와 마찬가지 로 ASP.NET 에서 어떻게 호출 되 는 지,FLEX 의 내부 코드 는 상세 하 게 설명 하지 않 겠 습 니 다.FLEX 안의 코드 가 많 지 않 습 니 다.글 뒤에 다운 로드 를 제공 하고 flex 3.0 또는 4.0 으로 실행 할 수 있 습 니 다.
그 중 하 나 는 여러 번 선택 하여 삭제 한 곳 에서 임의로 여러 번 선택 하여 삭제 하 는 정확성 을 확보 하기 위해 선택 한 색인 항목 의 내림차 순 서 를 정렬 하고 배열 의 가장 큰 곳 에서 삭제 할 때마다 반복 적 으로 삭제 할 때 색인 이 경 계 를 초과 하지 않도록 해 야 한 다 는 것 을 설명 한다.

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;
 }     
}
호출 도 간단 합 니 다.asp 튜 토리 얼 x 페이지 에 생 성 된 swf 파일 을 불 러 옵 니 다.여기 서 생 성 된 파일 이름 은 upload.swf 입 니 다.flex 에 내 장 된 swfobject.js 의 방법 으로 불 러 옵 니 다.다음 과 같 습 니 다.

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
 <title>    </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/    " 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(){
    //      ,           
    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>
    ,        ,  upload.swf   uploadfile  , flex        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"]; //             ,           
 if (file != null && file.ContentLength > 0)
 {
  file.SaveAs(path+Request.Form["filename"]);
 }
}
파일 스 트림 으로 받 고 저장 하 는 것 이 아니 기 때문에 큰 파일 을 올 리 는 것 이 라면 페이지 가 100%올 라 간 것 을 볼 수 있 지만 이 처리 저장 페이지 가 잠시 멈 추고 수신 과 저장 이 완 료 된 후에 야 프론트 페이지 가 반응 할 수 있 습 니 다.
또 하 나 는 전달 하 는 매개 변수 가 중국 어 를 포함 하고 있다 면 config 인 코딩 형식 이 utf-8 형식 이 필요 하지만 기 존의 시스템 은 gb 2312 형식 일 수 있 습 니 다.utf-8 로 바 꾸 면 시스템 에 영향 을 미 칠 수 있 습 니 다.웹 config 를 따로 만 들 고 업로드 할 때 단독 config 를 읽 을 수 있 습 니 다.
이상 은 asp.net 에서 파일 업로드 코드 를 대량으로 선택 한 것 입 니 다.여러분 이 ASP.NET 에서 다 중 파일 을 업로드 할 때 발생 하 는 문 제 를 해결 할 수 있 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기