2015-01-25 1 views
2

에 이미지 파일로 보내 https://github.com/fengyuanchen/cropperAngularJS와는 64 기수에서 이진 데이터 이미지를 만들어 내 AngularJS와 응용 프로그램에서 이미지를 자르기이 도구를 사용하고 서버

다음 내가 서버에 데이터를 저장하려고 노력하지만, 지금은 보내 base64 code ... base64가 아닌 일반 자른 이미지 바이너리 코드를 어떻게 보낼 수 있습니까? 진짜야?

업로드 내 코드는 같은 : 나는처럼

$scope.photoChanged = function(files) { 
    $scope.oldImg = angular.element(document.querySelector('#avatar-id')); 
    $scope.files = files;   
    var reader = new FileReader(); 
    reader.onload = function(e) { 
     $scope.imagecontent = e.target.result; 
    }; 
    reader.readAsDataURL(files[0]); 
    }; 

$scope.setCroppedData = function(data) { 
    $('#avatar-id').attr('src', data); 
    $scope.nImg = new Image(); 
    $scope.nImg.src = data; // data - is base64 image code 
    } 
    ... 
    uploaderService.addImage($scope.nImg.src).then(function(url) { 
    $scope.person.AvatarUrl = url; 
    $scope.updateContactQuery(); 
    }); 
    ... 

어떻게 내가 어떤 croping없이 보낼 수 :

var addImage = function(files) { 
     var deferred = $q.defer(); 
     var fd = new FormData();  

     var blob = new Blob([files], { type : "image/png"}); 
     fd.append("file", blob); 

     $http.post(settings.apiBaseUri + "/files", fd, { 
      withCredentials: true, 
      headers: { 
      'Content-Type': undefined 
      }, 
      transformRequest: angular.identity 
     }) 
     .success(function(data, status, headers, config) { 
      url = data.Url; 
      deferred.resolve(url); 
     }) 
     .error(function(err, status) { 

     }); 
     return deferred.promise; 
    }; 

여기에 내가 base64로 코드를 전송 : 브라우저에서 링크를 통해 이동하여 이미지를 볼 수 있도록 이미지 파일을 보내십시오. 그러나 byte64 코드는 사용하지 마십시오. ??? 내가 uintArray 당신이 원하는 가정

var binaryImg = atob(base64Image); 
var length = binaryImg.length; 
var arrayBuffer = new ArrayBuffer(length); 
var uintArray = new Uint8Array(arrayBuffer); 
for (var i = 0; i < length; i++) { 
    uintArray[i] = binaryImg.charCodeAt(i); 
} 

:

+0

base64를 보내고 서버에서 이미지 조작 기능을 사용하여 이미지 파일을 만들고 저장하는 것이 더 쉬울까요? – geekman

+0

@geekman no - 서버는 변경되지 않습니다 ... – brabertaser19

+0

정확히 무엇을하고 싶은지 이해하지 못했습니다. 이미지를 서버에 저장하거나 단순히 페이지에 표시하고 싶습니까? – geekman

답변

2

당신은 다음과 같은 바이너리 이미지 데이터로 변환 ArrayBuffer에서 base64로 데이터를 포장 할 수 있습니다.

+0

쿼리 예제 – brabertaser19

+0

을 추가하십시오. "쿼리 예"는 무엇을 의미합니까? 당신의 질문은 '정상적인 자른 이미지 바이너리를 보내는 법'입니다. – Rebornix

+0

나는 http 쿼리를 게시하는 것을 의미합니다. uintArray를 매개 변수로 보낼 수 있습니까? – brabertaser19

관련 문제