2016-01-19 51 views
0

我想向我的服务器发送一个头像,但是我有这个错误“您必须在您的POST表单数据中包含'头像'文件var。”如何使用Angular发布数据作为表单数据

function getPictureSuccess(imageData) { 
    var image = "data:image/jpeg;base64," + imageData; 
    $scope.avatar = image; 
} 

$http({ 
    url: api_url + 'userplus/avatar_upload/?key=' + api_key + '&cookie=' + dataCookie, 
    method:"POST", 
    headers : {'Content-Type': 'application/x-www-form-urlencoded'}, 
    data: {avatar: avatar} 
}); 
+2

数据:{头像:$ scope.avatar} –

回答

0

变化data: {avatar: avatar}data: {avatar: $scope.avatar}

+0

仍然有同样的错误 –

+0

你有ENCTYPE = “的multipart/form-data的” 中你的表单的声明?如果没有,你必须添加它。 –

+0

我使用科尔多瓦相机插件拍照iphone –

0
try 

imgURI = "data:image/jpeg;base64," + imageData; 

var FD = new FormData(); 
FD.append('image', dataURItoBlob(imgURI), 'image.jpg'); // "image" This is what you get at server side so change it accord inly 
FD.append("Other Param", 'other Param value ') // other parameter needed to post 


$http.post('Your Url', DataObj, { 
    headers: { 
     'Content-Type': undefined 
    }, 
    transformRequest: angular.identity 
}).then(function(responce) { 
    responce.data; 
}) 

// And here is your helper function 


function dataURItoBlob(dataURI) { 
    // convert base64/URLEncoded data component to raw binary data held in a string 
    var byteString = atob(dataURI.split(',')[1]); 
    var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0] 

    var ab = new ArrayBuffer(byteString.length); 
    var ia = new Uint8Array(ab); 
    for (var i = 0; i < byteString.length; i++) { 
     ia[i] = byteString.charCodeAt(i); 
    } 

    var bb = new Blob([ab], { 
     "type": mimeString 
    }); 
    return bb; 
}