一、图片上传的基本原理
- 用户在客户端选择图片文件。
- 将图片文件上传到服务器。
- 服务器接收图片文件并进行处理(如保存、存储等)。
- 将处理结果返回给客户端。
二、Vue.js实现图片上传
<template>
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-upload="beforeUpload">
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
</template>
<script>
export default {
methods: {
handlePreview(file) {
console.log(file);
},
handleRemove(file, fileList) {
console.log(file, fileList);
},
beforeUpload(file) {
const isJPGPNG = file.type === 'image/jpeg' || file.type === 'image/png';
if (!isJPGPNG) {
this.$message.error('上传图片只能是 JPG/PNG 格式!');
}
const isLt500KB = file.size / 1024 / 1024 < 0.5;
if (!isLt500KB) {
this.$message.error('上传图片大小不能超过 500KB!');
}
return isJPGPNG && isLt500KB;
}
}
}
</script>
三、Base64编码技巧
- 前端获取图片文件并转换为Base64编码。
function uploadImage(file) {
const reader = new FileReader();
reader.onload = function (e) {
const base64 = e.target.result;
// 将base64编码的图片上传到服务器
// ...
};
reader.readAsDataURL(file);
}
- 将Base64编码的图片上传到服务器。
function uploadBase64Image(base64) {
const formData = new FormData();
formData.append('image', base64);
fetch('https://your-server.com/upload', {
method: 'POST',
body: formData
})
.then(response => response.json())
.then(data => {
console.log('图片上传成功:', data);
})
.catch(error => {
console.error('图片上传失败:', error);
});
}
四、总结