一、图片上传的基本原理

  1. 用户在客户端选择图片文件。
  2. 将图片文件上传到服务器。
  3. 服务器接收图片文件并进行处理(如保存、存储等)。
  4. 将处理结果返回给客户端。

二、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编码技巧

  1. 前端获取图片文件并转换为Base64编码。
function uploadImage(file) {
  const reader = new FileReader();
  reader.onload = function (e) {
    const base64 = e.target.result;
    // 将base64编码的图片上传到服务器
    // ...
  };
  reader.readAsDataURL(file);
}
  1. 将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);
  });
}

四、总结