uni-app 商品评价功能支持PC端上传图片

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

uni-app 商品评价功能支持PC端上传图片

如题

2 回复

承接双端(Android,iOS)原生插件开发,uni-app开发。欢迎咨询
QQ:1559653449 V X:fan-rising


在uni-app中实现商品评价功能并支持PC端上传图片,可以利用uni-app的跨平台能力,结合其提供的API接口和组件来完成。以下是一个基本的实现思路和代码示例,演示如何在uni-app中实现这一功能。

实现思路

  1. 页面布局:使用uni-app的布局组件(如<view><image>等)构建评价页面,包括文本输入框和图片上传区域。
  2. 图片上传:在PC端,可以使用<input type="file">来触发文件选择,然后利用uni-app的文件系统API(如uni.chooseImage,虽然在PC端可能不完全适用,但可以通过其他方式实现)或原生JavaScript的FileReader来处理文件上传。
  3. 数据提交:将用户填写的评价内容和选择的图片一起提交到服务器。

代码示例

页面布局(evaluation.vue)

<template>
  <view class="container">
    <textarea v-model="comment" placeholder="请输入您的评价"></textarea>
    <button @click="chooseImage">上传图片</button>
    <view v-for="(image, index) in images" :key="index">
      <image :src="image.path" mode="widthFix"></image>
    </view>
    <button @click="submitEvaluation">提交评价</button>
  </view>
</template>

<script>
export default {
  data() {
    return {
      comment: '',
      images: []
    };
  },
  methods: {
    chooseImage() {
      // PC端特殊处理,使用原生input选择文件
      const input = document.createElement('input');
      input.type = 'file';
      input.accept = 'image/*';
      input.onchange = (e) => {
        const files = e.target.files;
        for (let i = 0; i < files.length; i++) {
          const file = files[i];
          const reader = new FileReader();
          reader.onload = (event) => {
            this.images.push({ path: event.target.result });
          };
          reader.readAsDataURL(file);
        }
      };
      input.click();
    },
    submitEvaluation() {
      // 提交评价到服务器
      const formData = new FormData();
      formData.append('comment', this.comment);
      this.images.forEach((image, index) => {
        // 注意:这里假设服务器接受base64编码的图片,否则需要转换为文件对象
        formData.append(`images[${index}]`, image.path.split(',')[1]);
      });
      uni.uploadFile({
        url: 'https://your-server.com/api/submitEvaluation',
        filePath: formData,
        name: 'file',
        success: (res) => {
          console.log('评价提交成功', res);
        },
        fail: (err) => {
          console.error('评价提交失败', err);
        }
      });
    }
  }
};
</script>

注意事项

  1. PC端文件上传:在PC端,直接使用uni.chooseImage可能无法正常工作,因此示例中使用了原生<input type="file">来选择文件。
  2. 图片格式:如果服务器不接受base64编码的图片,可以考虑使用Blob对象或FormDataappend(file, blob, filename)方法来处理。
  3. 安全性:在实际应用中,需要注意文件大小、类型等校验,以及上传接口的安全性。
回到顶部