के साथ अमेज़ॅन S3 पर एक फ़ाइल अपलोड करें I S3 बाल्टी में फ़ाइल अपलोड करने का प्रयास करते समय एक समस्या में भाग गया। सबकुछ काम करता है सिवाय इसके कि मेरी फ़ाइल पैरामीटर उचित प्रतीत नहीं होते हैं। मैं नोडजेस से एस 3 तक अपलोड करने के लिए अमेज़ॅन एस 3 एसडीके का उपयोग कर रहा हूं।NodeJS
var multiparty = require('connect-multiparty'),
multipartyMiddleware = multiparty();
app.route('/api/items/upload').post(multipartyMiddleware, items.upload);
यह items.upload() फ़ंक्शन है:
exports.upload = function(req, res) {
var file = req.files.file;
var s3bucket = new AWS.S3({params: {Bucket: 'mybucketname'}});
s3bucket.createBucket(function() {
var params = {
Key: file.name,
Body: file
};
s3bucket.upload(params, function(err, data) {
console.log("PRINT FILE:", file);
if (err) {
console.log('ERROR MSG: ', err);
} else {
console.log('Successfully uploaded data');
}
});
});
};
"hello"
की तरह एक स्ट्रिंग के लिए Body
परम स्थापना ठीक काम करता है
ये मेरी मार्गों सेटिंग नहीं है। doc के अनुसार, Body
परम को (बफर, टाइप किया हुआ ऐरे, ब्लॉब, स्ट्रिंग, रीडेबलस्ट्रीम) ऑब्जेक्ट डेटा लेना चाहिए। हालांकि, एक फ़ाइल वस्तु को अपलोड निम्न त्रुटि संदेश के साथ विफल:
{ fieldName: 'file',
originalFilename: 'second_fnp.png',
path: '/var/folders/ps/l8lvygws0w93trqz7yj1t5sr0000gn/T/26374-7ttwvc.png',
headers:
{ 'content-disposition': 'form-data; name="file"; filename="second_fnp.png"',
'content-type': 'image/png' },
ws:
{ _writableState:
{ highWaterMark: 16384,
objectMode: false,
needDrain: true,
ending: true,
ended: true,
finished: true,
decodeStrings: true,
defaultEncoding: 'utf8',
length: 0,
writing: false,
sync: false,
bufferProcessing: false,
onwrite: [Function],
writecb: null,
writelen: 0,
buffer: [],
errorEmitted: false },
writable: true,
domain: null,
_events: { error: [Object], close: [Object] },
_maxListeners: 10,
path: '/var/folders/ps/l8lvygws0w93trqz7yj1t5sr0000gn/T/26374-7ttwvc.png',
fd: null,
flags: 'w',
mode: 438,
start: undefined,
pos: undefined,
bytesWritten: 261937,
closed: true },
size: 261937,
name: 'second_fnp.png',
type: 'image/png' }
किसी भी मदद की बहुत सराहना की जाएगी:
[Error: Unsupported body payload object]
इस फ़ाइल में वस्तु है!
आपके सर्वर केवल S3-साइन्ड-यूआरएल बनाने के लिए एडब्ल्यूएस रहस्य स्टोर करने के लिए (की जरूरत है aws-sdk का उपयोग कर)। ग्राहक हस्ताक्षरित यूआरएल पुनर्प्राप्त करता है, उस यूआरएल का उपयोग करते हुए कोई भी अपलोड क्लाइंट-साइड होता है। इस मार्गदर्शिका को चेकआउट करें: https://devcenter.heroku.com/articles/s3-upload-node – rocketspacer