2017-02-16 1 views
0

Я хочу, чтобы загрузить файл изображения через XHR используя $http услуги, предоставляемые angularJS и загружать данные ответа (данные изображения) в ОСС (это услуга, хост-файлы предоставлены Alibaba), и это api reference for put является:

enter image description here

, который указывает на то, что он будет принимать {String|Buffer|ReadStream} в качестве второго параметра file, , но как я могу передать данные ответа, так что я мог бы сделать, что параметр для этого put(name, file) метода, как:

$http.get("http://image.url/file.gif").then(
    function success(response){ 
     console.log("type of response.data is :" + typeof response.data); 
     oss.put("test.jpg", response.data); //<-- here will give an error 
    }, 
    function fail(response){ 
     console.log("error"); 
    } 
) 

это даст ошибку типа:

enter image description here Любое предложение или ответ ценится.

ответ

0

Если вы получаете изображения по ссылкам все время, и вы хотите получить данные строки из него, я пробовал небольшую функцию, на которую я надеюсь, что она помогает, она берет ссылку и ставит вам данные изображения в формате base64 строки

function getBase64StringFromImgLink(imageSrc, imgType) { 

    var imageAsCanvas; 

    /* 
    * Creates a new image object from the src 
    * Uses the deferred pattern 
    */ 
    var createImage = function() { 
     var deferred = $.Deferred(); 
     var img = new Image(); 

     img.onload = function() { 
      deferred.resolve(img); 
     }; 
     img.src = imageSrc; 
     return deferred.promise(); 
    }; 

    /* 
    * Create an Image, when loaded and start to resize 
    */ 
    $.when(createImage()).then(function (image) { 
     imageAsCanvas = document.createElement("canvas"); 
     imageAsCanvas.width = image.width; 
     imageAsCanvas.height = image.height; 
     var ctx = imageAsCanvas.getContext("2d"); 
     ctx.drawImage(image, 0, 0, imageAsCanvas.width, imageAsCanvas.height); 

     $scope.$apply(function($scope){ 
      $scope.imageAsBase64String = imageAsCanvas.toDataURL(imgType); 
      oss.put("test.jpg", $scope.imageAsBase64String); //<-- here will be the data string i hope it works 
     }); 
    }, function() {console.log('error creating an image')}); 
} 
//How to call example 
getBase64StringFromImgLink('images/george-avatar.jpg', 'image/jpeg'); 

<!--HTML --> 
<img data-ng-src="{{imageAsBase64String}}" > 
+0

спасибо за ответы, к сожалению, образ, который я хочу принести и загрузки является 'gif', который в данном случае, кажется, извлечения данных из холста не поможет, спасибо, хотя: -) – armnotstrong

+0

np, извините, это не помогло :) –

Смежные вопросы