Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS S3文件上载-策略条件失败_Javascript_Angularjs_Node.js_Amazon S3 - Fatal编程技术网

Javascript AngularJS S3文件上载-策略条件失败

Javascript AngularJS S3文件上载-策略条件失败,javascript,angularjs,node.js,amazon-s3,Javascript,Angularjs,Node.js,Amazon S3,我正在尝试使用ng文件上载模块将文件上载到S3。我得到一个错误: 根据策略无效:策略条件失败:[“eq”, “$success\u action\u status”,“201”] 我的代码基于此,略有更改: api.js: exports.signing = function(req, res) { var request = req.body; var fileName = request.filename; var path = fileName; var readType = "pub

我正在尝试使用ng文件上载模块将文件上载到S3。我得到一个错误:

根据策略无效:策略条件失败:[“eq”, “$success\u action\u status”,“201”]

我的代码基于此,略有更改:

api.js:

exports.signing = function(req, res) {

var request = req.body;
var fileName = request.filename;
var path = fileName;

var readType = "public-read";

var expiration = moment().add(5, 'm').toDate();

var s3Url = process.env.S3_URL;

var s3Policy = {
    'expiration': expiration,
    'conditions': [{
        'bucket' : process.env.S3_BUCKET,
    },
    ['starts-with', '$key', path],
    {
        'acl': readType
    },
    {
        'succes_action_status': '201'
    },
    ['starts-with', '$Content-Type', request.type],
    ['content-length-range', 2048, 10485760],
    ]
};

var stringPolicy = JSON.stringify(s3Policy);
var base64Policy = new Buffer(stringPolicy, 'utf-8').toString('base64');

//sign policy
var signature = crypto.createHmac('sha1', process.env.AWS_SECRET_KEY).update(new Buffer(base64Policy, 'utf-8')).digest('base64');

var credentials = {
    url: s3Url,
    fields: {
        key: fileName,
        AWSAccessKeyId: process.env.AWS_ACCESS_KEY,
        acl: readType,
        policy: base64Policy,
        signature: signature,
        'Content-Type': request.type,
        success_action_status: '201'
    }
};

res.jsonp(credentials);
};
controller.js

$scope.upload = function(files) {
    if (files.length > 0) {
        var filename = files[0].name;
        var type = files[0].type;
        var query = {
            filename: filename,
            type: type
        }
    };

    if (files && files.length) {
        for (var i=0; i < files.length; i++) {
            var file = files[i];
            photoService.signingS3(query).success(function(result) {
                Upload.upload({
                url: "https://***.s3.amazonaws.com",
                method: "POST",
                fields: result.fields,
                transformRequest: function (data, headersGetter) {
                        //Headers change here
                        var headers = headersGetter();
                        delete headers['Authorization'];
                        return data;
                },
                file: file
            }).progress(function(evt) {
                console.log('progress: ' + parseInt(100.0 * evt.loaded / evt.total));
            }).success(function (data, status, headers, config) {
                console.log('file ' + config.file.name + 'is uploaded successfully. Response: ' + data);
                }).error(function(err) {
                    console.log(err);
                });
            }).error(function(data, status, headers, config) {
                console.log(data);
            });
            }

        }
    }
$scope.upload=函数(文件){
如果(files.length>0){
var filename=文件[0]。名称;
变量类型=文件[0]。类型;
变量查询={
filename:filename,
类型:类型
}
};
if(files&&files.length){
对于(var i=0;i

你能告诉我它有什么问题吗?

这里
['starts-with','$key',path]
path的值必须是:'somedirectory in s3'+fileName。另外,检查您的bucket名称是否已相应填充

此处
['starts-with','$key',path]
path的值必须为'somedirectory in s3'+fileName。另外,检查您的bucket名称是否已相应填充

您的s3策略有问题,当尝试登录和上载时,请再次检查var S3Policy。您的s3策略有问题,当尝试登录和上载时,请再次检查var S3Policy。我确实在我的存储桶中创建了一个“测试”目录,但没有成功。现在根据策略我得到了
无效:策略条件失败:[“开始于”、“$key”、“test/iphone.jpg”]
我确实在我的bucket中创建了一个“test”目录,但没有成功。现在,根据策略,我得到
无效:策略条件失败:[“以“,”$key”,“test/iphone.jpg”]