我让用户使用Multer-S3,然后通过循环显示在前端的那些图像上传多个图像直接到Amazon-S3。所有的作品完美。错误图像方向时 - 亚马逊S3
但是,当通过手机上传图片(在iPhone或Android上拍摄的图片)时,手机的方向是正确的,但在桌面上没有正确的方向。主要问题。
这是由于图片EXIF数据我相信。
似乎像ImageMagick或Kraken JS https://kraken.io/docs/storage-s3可能是一种解决方法,但对于我的生活,我无法弄清楚如何使用上传和显示图像的方式来实现。
如何更改我的代码以自动定位图像?注意:它必须适用于多个图像。
感谢您的帮助!
继承人的如何我让用户同时直接上传多张图片,以亚马逊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是文件路径到我的亚马逊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](https://stackoverflow.com/q/46135349/643039) –
@MathieudeLorimier感谢您的发送。很有意思。我想我宁愿将它固定在后端而不是前端。有什么想法吗? :) – AndrewLeonardi
我同意,@mostafazh有很好的建议。 –