如何获取为浏览器上的文件输入选择的图像的尺寸
How to get the dimensions of an image selected for a file input on the browser
我有一个图片上传框。标准的东西:
<input id="image-upload-input" type="file" />
一旦用户选择了一个文件,我就可以访问内容并将其通过 Axios 发送到我的 API,如下所示:
const imageUploadInput = document.getElementById("image-upload-input");
const file = imageUploadInput.files[0];
if (!file) {
return;
}
const reader = new FileReader();
const component = this;
reader.onload = function (event) {
axios.post("upload/image", Buffer.from(event.target.result));
};
reader.readAsArrayBuffer(file);
但是,我对尺寸有一些限制,想在客户端检查一下。
我相当确定可以做到。我还没有尝试过,但我想如果我只是将数据弹出到一个(理想情况下不可见的)带有数据 src
属性的 img
标签中,那可能会起作用。有没有人有任何工作代码?或者更好的方法?
添加类似这样的内容应该有效
imageUploadInput.onchange = function (event) {
const file = imageUploadInput.files[0];
if (!file) {
return;
}
const image = new Image();
image.onload = function() {
console.log(this.width, this.height);
}
image.src = URL.createObjectURL(file);
};
我有一个图片上传框。标准的东西:
<input id="image-upload-input" type="file" />
一旦用户选择了一个文件,我就可以访问内容并将其通过 Axios 发送到我的 API,如下所示:
const imageUploadInput = document.getElementById("image-upload-input");
const file = imageUploadInput.files[0];
if (!file) {
return;
}
const reader = new FileReader();
const component = this;
reader.onload = function (event) {
axios.post("upload/image", Buffer.from(event.target.result));
};
reader.readAsArrayBuffer(file);
但是,我对尺寸有一些限制,想在客户端检查一下。
我相当确定可以做到。我还没有尝试过,但我想如果我只是将数据弹出到一个(理想情况下不可见的)带有数据 src
属性的 img
标签中,那可能会起作用。有没有人有任何工作代码?或者更好的方法?
添加类似这样的内容应该有效
imageUploadInput.onchange = function (event) {
const file = imageUploadInput.files[0];
if (!file) {
return;
}
const image = new Image();
image.onload = function() {
console.log(this.width, this.height);
}
image.src = URL.createObjectURL(file);
};