uni-app 图片上传相对路径怎么转base64 上传

发布于 1周前 作者 caililin 来自 Uni-App

uni-app 图片上传相对路径怎么转base64 上传

uniapp app端 不支持 new Image() 不支持 $refs,无法修改canvas宽高。

请路过的各位高手点拨

3 回复

拜谢了(手动90度鞠躬)

在uni-app中,将图片上传的相对路径转换为Base64编码并进行上传,可以通过以下步骤实现。这通常涉及到读取图片文件、将文件内容转换为Base64编码,然后上传编码后的字符串。下面是一个简单的代码示例,展示了如何在uni-app中实现这一功能。

首先,确保你的uni-app项目已经配置了文件上传的相关权限(如果需要的话)。

1. 选择图片并读取为Base64

在页面中添加一个按钮用于选择图片,并使用uni.chooseImage API来选择图片。然后,通过uni.getFileSystemManager读取图片文件,并将其转换为Base64编码。

// pages/index/index.vue
<template>
  <view>
    <button @click="chooseImage">选择图片</button>
    <image v-if="imageSrc" :src="imageSrc" style="width: 100px; height: 100px;"></image>
  </view>
</template>

<script>
export default {
  data() {
    return {
      imageSrc: '' // 用于存储图片的Base64编码
    };
  },
  methods: {
    chooseImage() {
      uni.chooseImage({
        count: 1, // 默认9
        sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
        sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
        success: (res) => {
          const tempFilePaths = res.tempFilePaths;
          this.convertToBase64(tempFilePaths[0]);
        }
      });
    },
    convertToBase64(filePath) {
      const fs = uni.getFileSystemManager();
      fs.readFile({
        filePath,
        encoding: 'base64',
        success: (res) => {
          this.imageSrc = 'data:image/png;base64,' + res.data; // 假设是png格式,根据实际情况修改
          // 此处可以添加上传Base64编码的代码
          this.uploadBase64(res.data);
        },
        fail: (err) => {
          console.error(err);
        }
      });
    },
    uploadBase64(base64Data) {
      // 假设你有一个上传接口
      uni.request({
        url: 'https://your-upload-url.com/upload',
        method: 'POST',
        data: {
          image: base64Data
        },
        success: (uploadRes) => {
          console.log('上传成功', uploadRes);
        },
        fail: (err) => {
          console.error('上传失败', err);
        }
      });
    }
  }
};
</script>

注意事项

  1. 图片格式:在convertToBase64方法中,data:image/png;base64,是假设图片是PNG格式的。如果你的图片是其他格式(如JPEG),请相应地修改MIME类型。
  2. 文件大小:Base64编码会增加文件大小约33%,因此如果图片较大,上传时可能会遇到性能问题或服务器限制。
  3. 错误处理:示例代码中的错误处理较为简单,实际项目中应增加更详细的错误处理和用户提示。

通过上述代码,你可以在uni-app中实现图片选择、转换为Base64编码以及上传的功能。

回到顶部