Tôi đang cố tải các tệp lên Thùng S3 S3 của tôi. S3 và amazon được thiết lập. Đây là thông báo lỗi từ Amazon:Cách tải tệp lên Amazon S3 bằng Meteor?
mâu thuẫn thông số chuỗi truy vấn: acl, chính sách
Chính sách và chữ ký được mã hóa, với Crypto.js cho Node.js
var crypto=Npm.require("crypto");
Tôi đang cố gắng xây dựng yêu cầu POST bằng phương pháp Meteor HTTP.post. Điều này cũng có thể sai.
var BucketName="mybucket";
var AWSAccessKeyId="MY_ACCES_KEY";
var AWSSecretKey="MY_SECRET_KEY";
//create policy
var POLICY_JSON={
"expiration": "2009-01-01T00:00:00Z",
"conditions": [
{"bucket": BucketName},
["starts-with", "$key", "uploads/"],
{"acl": 'public-read'},
["starts-with", "$Content-Type", ""],
["content-length-range", 0, 1048576],
]
}
var policyBase64=encodePolicy(POLICY_JSON);
//create signature
var SIGNATURE = encodeSignature(policyBase64,AWSSecretKey);
console.log('signature: ', SIGNATURE);
Đây là yêu cầu POST Tôi đang sử dụng với Meteor:
//Send data----------
var options={
"params":{
"key":file.name,
'AWSAccessKeyId':AWSAccessKeyId,
'acl':'public-read',
'policy':policyBase64,
'signature':SIGNATURE,
'Content-Type':file.type,
'file':file,
"enctype":"multipart/form-data",
}
}
HTTP.call('POST','https://'+BucketName+'.s3.amazonaws.com/',options,function(error,result){
if(error){
console.log("and HTTP ERROR:",error);
}else{
console.log("result:",result);
}
});
và cô ấy tôi đang mã hóa các chính sách và chữ ký:
encodePolicy=function(jsonPolicy){
// stringify the policy, store it in a NodeJS Buffer object
var buffer=new Buffer(JSON.stringify(jsonPolicy));
// convert it to base64
var policy=buffer.toString("base64");
// replace "/" and "+" so that it is URL-safe.
return policy.replace(/\//g,"_").replace(/\+/g,"-");
}
encodeSignature=function(policy,secret){
var hmac=crypto.createHmac("sha256",secret);
hmac.update(policy);
return hmac.digest("hex");
}
A không thể hình ra những gì đang xảy ra. Có thể đã xảy ra sự cố ở phương thức POST hoặc mã hóa vì tôi không biết các phương pháp này quá tốt. Nếu ai đó có thể chỉ cho tôi đúng hướng, để mã hóa hoặc gửi yêu cầu POST đến AmazonS3 đúng cách, nó có thể giúp ích rất nhiều.
(Tôi không muốn sử dụng filepicker.io, bởi vì tôi không muốn để buộc khách hàng phải đăng ký đó là tốt.)
Cảm ơn trước !!!
queryString không giống như các tham số POST, có thể bạn cần sao chép hai tham số bị phàn nàn về url GET ... – dandavis