Вы должны указать contentDisposition как часть заголовков запроса.Вы не можете указать это как часть параметров запроса.Укажите его явно в заголовках, как показано ниже.
var params = {Bucket : "bucketname" , Key : "keyName" , Body : "actualData"};
s3.putObject(params).
on('build',function(req){
req.httpRequest.headers['Content-Type'] = 'application/pdf' ; // Whatever you want
req.httpRequest.headers['ContentDisposition'] = 'inline';
}).
send( function(err,data){
if(err){
console.log(err);
return res.status(400).json({sucess: false});
}else{
console.log(success);
return res.status(200).json({success: true});
}
});
Код для загрузки объектов / изображений в s3
module.exports = function(app, models) {
var fs = require('fs');
var AWS = require('aws-sdk');
var accessKeyId = "ACESS KEY HERE";
var secretAccessKey = "SECRET KEY HERE";
AWS.config.update({
accessKeyId: accessKeyId,
secretAccessKey: secretAccessKey
});
var s3 = new AWS.S3();
app.post('/upload', function(req, res){
var params = {
Bucket: 'bucketname',
Key: 'keyname.png',
Body: "GiveSomeRandomWordOraProperBodyIfYouHave"
};
s3.putObject(params, function (perr, pres) {
if (perr) {
console.log("Error uploading data: ", perr);
} else {
console.log("Successfully uploaded data to myBucket/myKey");
}
});
});
}
Приведенный выше код будет гарантировать, что объект былзагружен на s3.Вы можете видеть его в бункере s3 в браузере, но вы не можете просмотреть его содержимое в бункере s3.
Вы не можете просматривать предметы в S3.S3 это ящик для хранения.Вы можете только загружать и загружать элементы в нем.Если вам нужно просмотреть содержимое, вам нужно будет загрузить и просмотреть его в браузере или любом проводнике по вашему выбору.Если вам просто нужно перечислить объекты в s3.Используйте приведенный ниже код.
Код для перечисления объектов s3
var AWS = require('aws-sdk');
AWS.config.update({accessKeyId: 'mykey', secretAccessKey: 'mysecret', region: 'myregion'});
var s3 = new AWS.S3();
var params = {
Bucket: 'bucketName',
Delimiter: '/',
Prefix: 's/prefix/objectPath/'
}
s3.listObjects(params, function (err, data) {
if(err)throw err;
console.log(data);
});
Используйте список S3 для вывода списка элементов S3.Таким образом, вы можете просмотреть их.Создайте гиперссылку для каждого из перечисленных элементов и укажите ссылку для загрузки s3.Таким образом, вы можете просматривать в браузере, а также загружать его, если вам нужно.
В случае, если вам нужно просмотреть его содержимое через узел JS, используйте код ниже, чтобы загрузить изображение, как будто вы загружаетеэто с удаленного URL.
Код для загрузки содержимого:
var fs = require('fs'),
request = require('request');
var download = function(uri, filename, callback){
request.head(uri, function(err, res, body){
console.log('content-type:', res.headers['content-type']);
console.log('content-length:', res.headers['content-length']);
request(uri).pipe(fs.createWriteStream(filename)).on('close', callback);
});
};
download('httpo://s3/URL' 'name.png', function(){
console.log('done');
});
Код для загрузки изображения в буфер:
const request = require('request');
let url = 'http://s3url/image.png';
request({ url, encoding: null }, (err, resp, buffer) => {
// typeof buffer === 'object'
// Use the buffer
// This buffer will now contains the image data
});
Использованиевыше, чтобы загрузить изображение в буфер.Как только он в буфере, вы можете манипулировать им так, как вам нужно.Приведенный выше код не загружает изображение, но помогает вам манипулировать изображением в s3 с помощью буфера.