2016-01-19 50 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; 
}