我正在使用croppie
来让用户裁剪图片。
Croppie
返回base64编码的图像(在我理解的情况下,带有编码图像数据的字符串)。
由于我使用Angular 1
,我想使用$http
组件传输此类图像。
这是我的方法:
控制器:
$scope.croppieRun = function () {
croppieObject.croppie('result', {
type: 'canvas',
format: 'png',
size: { width: '300', height: '300' }
}).then(function (resp) {
var imgData = resp.replace(/^data:image\/(png|jpg);base64,/, "");
factory.sendImage(imgData);
});
}
工厂:
function sendImage(imgData) {
var deferred = $q.defer();
$http({
method: "POST",
url: prefix + "/album/photoAdd",
headers: {
data: imgData
}
}).then(function (result) {
deferred.resolve(result);
}, function (error) {
deferred.reject(error);
}
);
return deferred.promise;
}
node.js服务器
router.post('/album/photoAdd', requiresUserAuthentication, multipartyMiddleware, function (req, res) {
var file = req.files.data;
我可以看到为什么它不能自己工作的一些原因:
POST
标头,我需要在那里更改一些设置,我宁愿不这样做multipart/form-data
编码不应该base64
使用,以允许在服务器端使用multipartyMiddleware
解决这个问题的最佳方法是什么?
谢谢: - )
答案 0 :(得分:0)
解决方案是在POST中将图像数据发布为data
,而不是headers