【发布时间】:2018-01-14 17:28:40
【问题描述】:
我让用户使用 Multer-S3 将多张图片直接上传到 Amazon-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");
}
});
});
我如何在前端显示图像。 Listings.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>
【问题讨论】:
-
看看this
-
@MathieudeLorimier 感谢您发送邮件。很有意思。我想我宁愿在后端而不是前端解决这个问题。有什么想法吗? :)
-
我同意,@mostafazh 有一些很棒的建议。
-
值得注意的是,ImageMagick(最新版本)解码 Exif 数据并将方向存储在“image->orientation”中。如果发生更改,我不相信它(还)将该值存储回 Exif 配置文件中。
-
@GlennRanders-Pehrson 非常感谢您让我知道这个 Glenn!关于如何处理多图像方面的任何想法? :)
标签: node.js image-processing file-upload amazon-s3 imagemagick