引言
一、访问磁盘图片
1.1 创建一个文件输入元素
在Vue模板中,您可以使用<input>
元素来创建一个文件输入框,让用户可以选择文件。
<template>
<div>
<input type="file" @change="handleFileChange">
</div>
</template>
1.2 处理文件选择事件
在Vue组件的methods
中,添加一个处理文件选择事件的方法。当用户选择文件后,这个方法会被触发。
<script>
export default {
methods: {
handleFileChange(event) {
const file = event.target.files[0];
if (file) {
// 文件处理逻辑
}
}
}
}
</script>
1.3 显示图片
一旦文件被选中,您可以使用HTML的<img>
元素来显示它。
<template>
<div>
<input type="file" @change="handleFileChange">
<img v-if="selectedImage" :src="selectedImage" alt="Selected Image">
</div>
</template>
1.4 处理图片数据
handleFileChange(event) {
const file = event.target.files[0];
if (file) {
const reader = new FileReader();
reader.onload = (e) => {
this.selectedImage = e.target.result;
};
reader.readAsDataURL(file);
}
}
二、前端文件处理技巧
2.1 文件上传
使用<el-upload>
组件(来自Element UI)可以轻松实现文件上传。
<el-upload
action="your-upload-url"
:on-success="handleUploadSuccess"
:on-error="handleUploadError"
>
<el-button slot="trigger" size="small" type="primary">选择文件</el-button>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
2.2 图片压缩
compressImage(file, maxsize) {
const reader = new FileReader();
reader.onload = (e) => {
const img = new Image();
img.onload = () => {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
const scale = Math.min(maxsize / img.width, maxsize / img.height);
canvas.width = img.width * scale;
canvas.height = img.height * scale;
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
canvas.toBlob((blob) => {
// 处理压缩后的blob
}, 'image/jpeg', 0.7);
};
img.src = e.target.result;
};
reader.readAsDataURL(file);
}
2.3 文件下载
使用JavaScript可以模拟点击事件来下载文件。
downloadFile(blob, filename) {
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.style.display = 'none';
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
window.URL.revokeObjectURL(url);
}