Я разрешаю пользователям загружать несколько изображений непосредственно на Amazon-S3 с помощью Multer-S3, а затем отображать эти изображения на передней панели через цикл. Все работает отлично.
Однако, когда изображения загружаются с помощью мобильного телефона (изображение, сделанное на iPhone или Android), ориентация правильная на мобильном телефоне, но не имеет правильной ориентации на рабочих столах. Основная проблема.
Это связано с данными EXIF, которые я считаю.
Похоже, что ImageMagick или Kraken JS https://kraken.io/docs/storage-s3 могут быть способом его решения, но для жизни я не могу понять, как либо с тем, как я загружаю и показываю изображения, показанные ниже.
Как мне изменить свой код ниже, чтобы автоматически ориентировать изображения? Примечание. Он должен работать для нескольких изображений.
Спасибо за любую помощь!
Вот как я могу позволить пользователям загружать сразу несколько изображений прямо на Amazon-S3:
aws.config.update({
secretAccessKey: 'AccessKey',
accessKeyId: 'KeyID',
region: 'us-east-2'
});
var s3 = new aws.S3();
var storage = multerS3({
limits : { files: 25 },
s3: s3,
bucket: 'files',
key: function (req, file, cb) {
var fileExtension = file.originalname.split(".")[1];
var path = "uploads/" + req.user._id + Date.now() + "." + fileExtension;
cb(null, path);
},
})
var upload = multer({storage: storage}).any("images", 25);
router.post("/", middleware.isLoggedIn, function(req, res, next){
upload(req,res,function(err) {
if(err) {
console.log(err);
res.redirect('/')
}
Listings.findById(req.params.id, function(err, foundListings){
var allimages = []
if(typeof req.files !== "undefined") {
for(var i = 0; i < req.files.length; i++) {
allimages.push(req.files[i].key);
}
}
var currentimages = allimages;
var newListings = {currentimages:currentimages}
//Removed the other Model aspects
Listings.create(newListings, function(err, newlyCreated){
if(err){
console.log(err);
} else {
res.redirect("/listings");
}
});
});
Как я показываю изображения на лицевой стороне. Listing.currentimages - это массив, содержащий все ссылки на изображения.
app.locals.awspath = "https://s3.us-east-2.amazonaws.com/myfiles/";
// awspath - путь к пути к пути Amazon-S3
<div id='allimages'>
<% for(var i = 0; i < listings.currentimages.length; i++ ) { %>
<div class='smallerImages'>
<% var url2 = awspath + listings.currentimages[i] %>
<img class="small" src="<%= url2 %>">
</div>
<% } %>
</div>