2013-03-04 1 views
2

asp.net mvc3 & knockout.js를 사용하여 여러 파일 업로드의 포괄적 인 예를 찾으려고합니다. 주변을 둘러 보았지만 시작부터 끝까지 솔루션을 보여주는 것은 아무것도 아닙니다! 녹아웃 바인딩이 필요한 것을 보여주는 예제가 있지만 "컨트롤러"에서 파일을 읽는 방법을 보여주지는 않습니다. 목표는 db에 파일을 업로드하고 저장합니다. AWS S3 스토리지에 저장하는 예는 장점입니다. 도와주세요.asp.net mvc3 & knockout.js 파일 업로드에 대한 좋은 예를 찾고

코 바인딩 :

또한
<input type="file" data-bind="value: fileToUpload, fileUpload: fileToUpload, url : 'Client/Upload' " /> 

ko.bindingHandlers.fileUpload = { 
    update: function (element, valueAccessor, allBindingsAccessor) { 
      var value = ko.utils.unwrapObservable(valueAccessor()) 
      if (element.files.length && value) { 
       var file = element.files[0]; 
       var url = allBindingsAccessor().url 


xhr = new XMLHttpRequest(); 
      xhr.open("post", url, true); 
      xhr.setRequestHeader("Content-Type", "image/jpeg"); 
      xhr.setRequestHeader("X-File-Name", file.name); 
      xhr.setRequestHeader("X-File-Size", file.size); 
      xhr.setRequestHeader("X-File-Type", file.type); 
      console.log("sending") 
      // Send the file (doh) 
      xhr.send(file); 
     } 
    } 
} 



[HttpPost] 
     public ActionResult Upload() 
     { 
      //Not sure what to do here. 
     } 

여러 파일을 업로드 할 필요가? 뷰 모델을 설정하는 방법을 잘 모릅니다.

+0

와 요청에 파일을 전송주의이 답변을보고 할 수 있습니다 지금 사용하고 있습니다. – jmogera

답변

2

자바 스크립트 쪽에서는 fineuploader http://fineuploader.com/을 사용하는 것이 좋습니다. 응답을 사용하여 viewmodel을 갱신하기위한 사용자 정의 Y 인딩을 작성할 수 있습니다.

<div data-bind="fileupload: viewModel.fileName"></div> 

ko.bindingHandlers.fileUpload = { 
init: function (element, valueAccessor) { 
     var $element = $(element); 
     var fileNameVal = valueAccessor; 
     var uploader = new qq.FineUploader({ 
      element: $element[0], 
      request: { 
      endpoint: 'server/your_upload_service' 
      }, 
      multiple: true, 
      validation: { 
       allowedExtensions: ['jpeg', 'jpg', 'txt'] 
      }, 
      callbacks: { 
      onComplete: function(id, fileName, responseJSON) { 
       if (responseJSON.success) { 
        // update your value 
        valueAccessor(fileName) 
        //may need to change this if you pass a reference back 
        // in your responseJSON such as an s3 key 
       } 
      } 
      } 
     }); 
    } 
}; 

은 서버 측에 관해서는 나는 ASP.net에 익숙하지 오전하지만 당신은 엔드 포인트에서 요청 데이터와 상호 작용 및 이미지 데이터를 포함하는 멀티 인코딩 된 형태의 부품을 추출 할 수 있어야한다.

MVC 3 file upload and model binding

File Upload ASP.NET MVC 3.0

또한 fineuploader가 나는 샘플 코드를 편집 키 "qqfile"

+0

http://fineuploader.com/ 위대한 도구처럼 보이지만 무료 버전을 찾고 있습니다. 평가판도 보지 못했습니다. – jmogera

+0

당신은 그것을 직접 만들 수 있습니다 https://github.com/valums/file-uploader/ 그것은 MIT 라이센스입니다. 수수료는 프로젝트를 유지하는 사람들을 지원하기 위해 단지 1 회 $ 15입니다. – BillPull

+0

감사합니다. 그래서 당신이 제안한 바인딩을 추가했지만 작동하지 않는 것 같습니다. 여기에 내가 작업하고있는 테스트 프로젝트에 대한 링크가 있습니다. 저를 제발 봐 주시겠습니까? http://sdrv.ms/WMJpSd – jmogera

관련 문제