php获取上传图片的宽高,FileReader获取上传图片的宽高

前言

input upload 图片上传,经常要判断上传图片的宽高。除了运用一些上传插件可以获取。原生的上传方式也可以获取,下面就说一下如何获取上传图片的宽高。

以饿了么上传插件为例

drag

:action="/upload"

accept="image/png, image/jpeg, image/gif, image/jpg"

:headers="headers"

:on-success ="successUploads"

:before-upload ="uploadyanzheng"

name="image"

multiple>

将文件拖到此处,或 点击上传

上传前的验证:

uploadyanzheng(file) {

let _this = this

//普通的判断可以用return false

// 获取文件尺寸,判断尺寸在不在规定范围之内

return new Promise(function(resolve, reject) {

let reader = new FileReader()

reader.readAsDataURL(file)

reader.onload = function(theFile) {

let image = new Image()

image.src = theFile.target.result

image.onload = function() {

let csize = `${this.width}*${this.height}`

if (!_this.creativeSize.includes(csize)) {//this.creativeSize是可以上传的尺寸列表数组

_this.$message.error(`${file.name}尺寸不对,请重新上传!`)

reject('图片尺寸不对')

} else {

file.width = this.width

file.height = this.height

resolve(file)

}

}

}

})

},

普通input file 上传

var MyTest = document.getElementById("upload_img").files[0];

var reader = new FileReader();

reader.readAsDataURL(MyTest);

reader.onload = function(theFile) {

var image = new Image();

image.src = theFile.target.result;

image.onload = function() {

alert("图片的宽度为"+this.width+",长度为"+this.height);

};

};

FileReader介绍

用法-访问选择的文件

可以通过

function handleFiles(files) {

for (var i = 0; i < files.length; i++) {

var file = files[i];

var imageType = /^image\//;

if (!imageType.test(file.type)) {

continue;

}

var img = document.createElement("img");

img.classList.add("obj");

img.file = file;

$("#haorooms").appendChild(img); // 把上传的图片添加到展示的div中

var reader = new FileReader();

reader.onload = (function(aImg) { return function(e) { aImg.src = e.target.result; }; })(img);

reader.readAsDataURL(file);

}

}

关于上传

FileReader预览上传图片(2018-09-21补充)

这个案例是参考张鑫旭的直接剪切板粘贴上传图片的前端JS实现,

这里也用到了FileReader,所以在这里补充一下:

HTML代码:

JS代码:

document.addEventListener('paste', function (event) {

var items = (event.clipboardData || window.clipboardData).items;

var file = null;

if (items && items.length) {

// 搜索剪切板items

for (var i = 0; i < items.length; i++) {

if (items[i].type.indexOf('image') !== -1) {

file = items[i].getAsFile();

break;

}

}

} else {

log.innerHTML = '当前浏览器不支持';

return;

}

if (!file) {

log.innerHTML = '粘贴内容非图片';

return;

}

// 此时file就是我们的剪切板中的图片对象

// 如果需要预览,可以执行下面代码

var reader = new FileReader()

reader.onload = function(event) {

preview.innerHTML = ''%20+%20event.target.result%20+%20'';

}

reader.readAsDataURL(file);

// 如果不需要预览,上面这段可以忽略

// 这里是上传

var xhr = new XMLHttpRequest();

// 上传进度

if (xhr.upload) {

xhr.upload.addEventListener('progress', function (event) {

log.innerHTML = '正在上传,进度:' + Math.round(100 * event.loaded / event.total) / 100 + '%';

}, false);

}

// 上传结束

xhr.onload = function () {

var responseText = xhr.responseText;

log.innerHTML = '上传成功,地址是:' + responseText;

};

xhr.onerror = function () {

log.innerHTML = '网络异常,上传失败';

};

xhr.open('POST', './upload.php', true);

xhr.setRequestHeader('FILENAME', encodeURIComponent(file.name));

xhr.send(file);

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值