TDesign----上传组件,批量上传但不自动上传

本文介绍了如何使用TDesign上传组件进行批量上传,同时控制不自动上传,通过调整`multiple`,`auto-upload`,和其他相关参数,以及后端接口交互,实现用户在提交文字内容后手动上传图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,我解释一下,什么叫批量上传但不自动长传。类似于一个表单,有文字有图片,后端要求,点击提交时,先发送文字部分的内容,返回一个id给你,再通过这个id上传一张或几张图片。

1.TDesign的上传组件

TDesign确实有批量上传但不自动上传的组件,但是他会多两个按钮"取消上传","点击上传",我当时也是想通过这个组件来实现,但是我再怎么也去不掉这两个按钮,或者去掉了,就自动上传了。也不能说,让两个按钮留着,让用户点击完”提交“再点一下"点击上传"吧

最后通过这个组件来进行改造的。

2.改造组件

不想批量上传,auto-upload设置为"false"
然后解释一下其他几个参数的意思:

  1. multiple: 这是一个布尔属性,如果设置为true,则允许用户在文件选择对话框中选择多个文件。如果设置为false,用户只能选择一个文件。这通常用于指定是否支持批量上传。
  2. allow-upload-duplicate-file: 这也是一个布尔属性,如果设置为true,则允许用户上传相同的文件多次。如果设置为false,则不允许上传重复的文件。这通常用于确定是否允许上传文件的重复副本。
  3. one-file-success: 多文件上传,一个文件一个请求场景,每个文件也会单独触发上传成功的事件。

  4. showThumbnail: 这是一个布尔属性,如果设置为true,则在上传组件中显示文件的缩略图(通常用于图像文件)。如果设置为false,则不显示文件的缩略图。
<div class="upload">
          <p>上传截图:</p>
          <t-upload
            ref="uploadRef"
            v-model="files"
            :action="upload.actionUrl"
            :data="upload.data"
            :multiple="multiple"
            :auto-upload="false"
            :size-limit="{ size: 10, unit: 'MB' }"
            :max="3"
            :allow-upload-duplicate-file="true"
            @fail="handleFail"
            @success="handleSuccess"
            @one-file-success="onOneFileSuccess"
            :theme="'image'"
            :showThumbnail="true"
            @remove="deleteImg"
            class="upload_image"
          />
        </div>
        <div class="btn">
            <t-button @click="submit" v-else>提交反馈</t-button>
        </div>
const uploadRef = ref();
const files = ref([]);
const multiple = ref(true);
const upload = reactive({
  actionUrl: window.location.origin + `这里写后端给的接口`,
  data: {
    意见反馈id: "",
  },//data里面是上传图片时,需要带的参数
});
const uploadFiles = () => {
  uploadRef.value.uploadFiles();
};
const handleFail = ({ file }) => {
  MessagePlugin.error(`文件 ${file.name} 上传失败`);
};
const handleSuccess = (params) => {
  MessagePlugin.success("提交成功");//这个函数是在uploadFiles 成功调用之后才会调用
};
const onOneFileSuccess = (params) => {
  //   console.log("onOneFileSuccess", params);
};

//删除图片
const deleteImg = (e) => {
  
};

//提交反馈
const submit = () => {
  //这里先请求文字内容部分的接口,获取后端返回的id
  $_updateFeedbackDetail({
    意见反馈id: "",
    data: {
      子系统名: palte.value,
      内容: textareaValue.value,
    },
  }).then((res) => {
    if (res.data.msg == "成功") {
      upload.data.意见反馈id = res.data.data;
      if (files.value.length > 0) {//为什么要写>0,因为有可能用户不上传图片,那就不需要调用上传图片的函数了
        uploadFiles();//后端返回id成功之后,再调用上传图片的函数
      }    
    }
  });
};

好了,参考代码试试吧

`tdesign-vue-next`是一款基于Vue.js设计系统的UI组件库,它提供了一套丰富的表单组件和易于使用的API来进行数据验证。在`tdesign-vue-next`中,你可以通过以下几个步骤来校验表单: 1. 安装依赖:首先确保已经在项目中安装了`@tdesign/vant`或`tdesign-vue-next`。 ```bash npm install @tdesign/vant @tdesign/vant/lib/form # 或者 yarn add @tdesign/vant @tdesign/vant/lib/form ``` 2. 使用Form组件:`tdesign-vue-next`中的`Form`组件包含了内置的验证功能。创建一个`Form`实例,并配置需要验证的字段和规则。 ```vue <template> <td-form :model="form" :rules="rules" @submit="onSubmit"> <!-- 表单元素 --> <td-field label="邮箱" name="email" type="email" required></td-field> <td-field label="密码" name="password" type="password" rule="minLength:6"></td-field> <!-- 更多表单元素... --> </td-form> </template> <script> import { Form, Field } from '@tdesign/vant'; export default { data() { return { form: { email: '', password: '' }, rules: { email: [{ type: 'required', message: '请输入邮箱地址' }], password: [{ type: 'required', message: '请输入密码' }, { min: 6, message: '密码长度至少6位' }] } }; }, methods: { onSubmit() { // 提交前验证,如果验证失败则阻止提交 if (this.$refs.form.validate()) { console.log('表单提交'); } else { console.log('表单验证失败'); } } } }; </script> ``` 在这个例子中,`name`属性用于绑定数据,`rule`属性定义了验证规则,如必填(`required`)、邮箱格式验证(`type: 'email'`)以及密码长度验证(`minLength:6`)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值