vant上传文件afterRead事件传参(例:上传第x张图)

6 篇文章 1 订阅

file作为afterRead回调的默认参数,当使用在v-for里面,还需要item、index等其余参数时,可以写成下面的回调形式

<div class="company_info" v-for="(item, index) in corpList" :key="index">
	<van-uploader class="uploader_wrapper" 
		:after-read="(file) => afterRead(file, index)"
		v-model="authList[index].authListImgs"
>         
 		<div class="uploader uploader2">
            <van-image
              width="130px"
              :max-count="1"
              :src="item.FasttdfsId"
            />
      	</div>
	 </van-uploader>
</div>
data() {
    return {
      corpList: [{ ...corpList }],
    };
  },
 methods: {
 // 上传的第几张则设置数组中第几个的值,方便后面回显
    afterRead(file,index) {
        this.corpList[index].FastdfsId = file.content;
    },
 }
  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 vant 的 Upload 组件实现文件上传,同时使用 video.js 库获取视频的第一帧作为缩略图。具体实现可以参考以下代码: <template> <van-uploader :after-read="afterRead" :before-read="beforeRead" :preview-options="{showIndicators: false}" :max-count="1" accept="video/*" capture="camera" multiple :preview-image="false" :preview-full-image="false" :preview-cover="false" > <van-icon name="photograph" /> </van-uploader> </template> <script> import videojs from 'video.js' import 'video.js/dist/video-js.css' export default { methods: { async beforeRead(file) { // 判断是否为视频文件 if (file.type.indexOf('video') !== 0) { this.$toast('请选择视频文件') return false } }, async afterRead(file) { // 创建 video 元素 const video = document.createElement('video') video.src = URL.createObjectURL(file) video.preload = 'metadata' video.onloadedmetadata = async () => { // 获取视频第一帧作为缩略图 const canvas = document.createElement('canvas') canvas.width = video.videoWidth canvas.height = video.videoHeight canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height) const thumbnail = canvas.toDataURL('image/jpeg') // 上传视频和缩略图 const formData = new FormData() formData.append('video', file) formData.append('thumbnail', thumbnail) // 发送上传请求 const response = await this.$axios.post('/api/upload', formData) this.$toast('上传成功') } // 初始化 video.js videojs(video) }, }, } </script>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值