Croppie,base64图像,通过$ http,multipartyMiddleware传输到node.js.

时间:2016-06-08 07:46:06

标签: angularjs node.js

我正在使用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

解决这个问题的最佳方法是什么?

谢谢: - )

1 个答案:

答案 0 :(得分:0)

解决方案是在POST中将图像数据发布为data,而不是headers

之一