前端封装一个把file对象如果大于1MB,处理成小于1MB的函数,并且返回一个file对象。
时间: 2024-05-05 08:17:55 浏览: 131
PHP专题——重点函数_静态化_缓存_面向对象_异常处理
好的,这个问题很容易回答。以下是前端封装的一个处理file对象的函数:
```javascript
function compressFile(file) {
if (file.size > 1 * 1024 * 1024) {
return new Promise((resolve, reject) => {
const reader = new FileReader()
reader.readAsDataURL(file)
reader.onload = event => {
const img = new Image()
img.src = event.target.result
img.onload = () => {
const canvas = document.createElement('canvas')
const ctx = canvas.getContext('2d')
canvas.width = img.width
canvas.height = img.height
ctx.drawImage(img, 0, 0, img.width, img.height)
canvas.toBlob(blob => {
resolve(new File([blob], file.name, { type: file.type }))
}, file.type, 0.8)
}
img.onerror = error => {
reject(error)
}
}
reader.onerror = error => {
reject(error)
}
})
} else {
return Promise.resolve(file)
}
}
```
使用这个函数可以将大于1MB的file对象压缩成小于1MB的file对象。
阅读全文