我正在使用" react-dropzone"为用户提供上传图像的方法。当用户提交时,我将图像保存在亚马逊S3云中。我需要测量图像宽度,但我已经尝试过imagemagick包和其他一些npm模块,我总是有一些问题,比如"找不到模块" fs""或"找不到模块' ../ lib / detector'(...)"。有什么建议吗?
S3.upload({
files:this.files,
path:"tours/"+this.tourId
},function(e,result){
// Get Image width here
});
答案 0 :(得分:1)
fs模块仅在服务器上可用,imagemagick也是如此。因此,您需要将图像传递给流星服务器才能使用它们。
或者,AWS S3具有lambda函数(可以使用javascript),并且可以在上传文件时触发,因此您可以在那里进行检测。您可以将图像信息保存到AWS上的单独文本文件,然后使用HTTP GET请求检索该文件。唯一的问题是lambda函数是异步执行的,因此在请求文件之前需要等待一段时间。
AWS API Gateway允许您使用HTTP请求调用lambda函数,因此一旦文件上载完成,您的下一步操作就是执行lambda函数的HTTP GET。这将返回您所需的信息。
答案 1 :(得分:1)
每个file
都应该有一个.preview
属性(除非你设置disablePreview
道具)。 file.preview
是一个blob网址,您可以将其加载到Image()
中以捕获其onload
事件中的宽度和高度:
var image = new Image();
image.src = window.URL.createObjectURL(file.preview);
image.onload = function () {
var width = image.width;
var height = image.height;
// TODO: Do something with the dimensions
};