2017-04-18 2 views
0

사용자 업로드 파일 자르기에 jQuery Croppie lib를 사용하고 있습니다. 사용자가 파일을 업로드 할 때 이미지를자를 수있는 모달을 여는 중입니다. 그 후이 자른 이미지를 파일 입력 값으로 설정하여 사용자가 모든 준비가 완료되면 양식을 제출할 수 있지만 자른 이미지를 입력 값으로 "설정"하는 방법을 모르겠습니다.자른 파일을 입력으로 입력하십시오 : 파일 값

여기 내 코드입니다.

$scope.openCropModal = function(files) { 
      if (!(files[0] instanceof Object) || (fileUploadMaxSize * 1100000) < files[0].size) { 
       Alertify.alert('File size must be less than ' + fileUploadMaxSize + 'mb'); 

       return false; 
      } 
      $('#cropLogoModal').modal({}); 

      var $uploadCrop = $('#cropperMainContainer').croppie({ 
       viewport: { 
        width: 200, 
        height: 200, 
        type: 'square' 
       }, 
       boundary: { 
        width: 300, 
        height: 300 
       }, 
       enableExif: true, 
       enableOrientation: true, 
       orientation: 4, 
      }); 

      var reader = new FileReader(); 

      reader.onload = function (e) { 
       $uploadCrop.croppie('bind', { 
        url: e.target.result 
       }).then(function() { 

       }); 

      }; 

      reader.readAsDataURL(files[0]); 

      $('#ready').on('click', function() { 
       $uploadCrop.croppie('result', 'blob').then(function(blob) { 

       }); 
      }); 

      $('.vanilla-rotate').on('click', function() { 
       $uploadCrop.croppie('rotate', parseInt($(this).data('deg'))); 
      }); 
     } 
+0

이 양식을 어떻게 보내시겠습니까? 아약스 또는 기본 HTML 동작을 통해? – Kaiido

+0

기본 HTML 양식 제출 – Aram810

+0

너무 나쁘다 ... 그럼 hackish dataURI 빈 필드가 유일한 방법입니다 ... 아약스를 통해 보낼 수있는 미래의 독자를 위해 FormData 객체를 만들고 여기에 캔버스의 BLOB 버전을 추가하십시오. 바이너리 데이터처럼 멀티 파트로 업로드됩니다. – Kaiido

답변

0

파일 첨부 파일로 저장하는 대신 bas64로 인코딩 된 blob 데이터의 숨김 필드를 만듭니다.

 var reader = new FileReader(); 

     reader.onload = function (e) { 
      $uploadCrop.croppie('bind', { 
       url: e.target.result 
      }).then(function(blob) { 
       $('#hiddenContent').val(btoa(blob)); 
      }); 
     }; 

서버 측에서는이 base64로 인코딩 된 이미지 콘텐츠를 읽고 새 파일에 저장하십시오.

경고 코드 테스트를 거치지 않았습니다.

+0

양식이 아약스를 통해 전송되는 경우이 솔루션은 실제로 못 생깁니다! – Kaiido

+0

@Kaiido 예, FormData와 함께 사용할 수있는 FileReader 개체를 가지고 있기 때문에 OP는 ** 기본 HTML 양식을 사용합니다 ** ** – Justinas

+0

첫 번째 부분은 아무도 없습니다 : OP는 FileReader를 사용하여 File을 croppy로 전달합니다. lib (btw 내가 Blob을 직접 받아들이는지, 아니면 적어도 blobURI를 받아들이는지는 궁금하지만) lib가 Blob을 반환하는 것처럼 보입니다. 그렇기 때문에 FormData가 분명히 최선의 선택이 될 것입니다. 그리고 OP가 기본 HTML 양식 제출을 사용하고 있다는 것이 확실하지 않았습니다. 원래 게시물에서 놓친 것 같습니다. – Kaiido