如何使用离子上传图像数据

时间:2016-11-09 06:45:08

标签: angularjs cordova file-upload ionic-framework

我的应用程序的某些部分需要帮助!我试图用Http Post Request上传头像图片使用CordovaFileTransfer和Cordova Camera。当我试图这样做时,我的离子应用程序代码414 url​​请求错误太长了!我使用Wordpress Rest Api Json User Plus插件!

当我发送文件与Postman它工作,但当我尝试使用代码我有错误!

我的按钮

    <button ng-click="uploadAvatar()"><i class="fa fa-camera"></i> Upload Avatar</button> 

我的控制器

&#13;
&#13;
 $scope.uploadAvatar =  function() {
  var user = AuthService.getUser();
    var options = {
         quality : 75,
         destinationType : Camera.DestinationType.DATA_URL,
         sourceType : Camera.PictureSourceType.CAMERA,
         allowEdit : true,
         encodingType: Camera.EncodingType.JPEG,
         popoverOptions: CameraPopoverOptions,
         targetWidth: 500,
         targetHeight: 500,
         saveToPhotoAlbum: false
     };
     $cordovaCamera.getPicture(options)
     .then(function(imageData) {
        $http.post('http://hannation.me/api/userplus/avatar_upload?cookie=' + user.cookie + '&key=57f211a0354d7' + '&avatar=data:image/png;base64,' + imageData)
        
     }, function(error) {
         console.error(error);
     });
    }
&#13;
&#13;
&#13;

我做错了什么?我认为我的代码是正确的,因为代码尝试将文件发送到服务器吗? 请帮助我,这个小部分会失去一个星期!

我用

更改为此

&#13;
&#13;
 $scope.uploadAvatar =  function() {
  var user = AuthService.getUser();
var options = {
     quality : 75,
     destinationType : Camera.DestinationType.DATA_URL,
     sourceType : Camera.PictureSourceType.CAMERA,
     allowEdit : true,
     encodingType: Camera.EncodingType.JPEG,
     popoverOptions: CameraPopoverOptions,
     targetWidth: 500,
     targetHeight: 500,
     saveToPhotoAlbum: false
 };
 $cordovaCamera.getPicture(options)
 .then(function(imageData) {
    var req = {
      method: 'POST',
      url: 'http://hannation.me/api/userplus/avatar_upload',
      data: 'cookie=' + user.cookie + '&key=57f211a0354d7' + '&avatar=data:image/png;base64' + imageData
    }
    $http(req).then(function(response){
         console.log(req);
      }, 
      function(error) {
         console.error(error);
      })
})
  }
&#13;
&#13;
&#13;

但钢铁不起作用!现在我有404错误!

First Image

Second Image

1 个答案:

答案 0 :(得分:1)

这是因为您与postget不匹配,您正在撰写$http.post,但您要在网址中传递数据。

var req = {
    method: 'POST',
    url: 'http://hannation.me/api/userplus/avatar_upload',
    data: cookie=' + user.cookie + '&key=57f211a0354d7' + '&avatar=data:image/png;base64,' + imageData
}

$http(req).then(function(response){
     console.log(response);
}, function(error){
     console.log(error);
});

检查angularjs http {/ 3>的docs