el-upload 上传多个视频

在这里插入图片描述

          <el-form-item label="视频" prop="video_url"><el-uploadclass="upload-demo"ref="uploadRef":multiple="true":on-change="handleChange":before-remove="beforeRemove":before-upload="beforeUploadVideo"action="/admin/uploads/posts?type=2":on-remove="handleRemove":file-list="fileListVid"limit="5":auto-upload="true":on-exceed="handleExceed":show-file-list="false"accept=".mp4,.avi,.mov"list-type="picture"><el-button slot="trigger" size="small" type="primary">选取文件</el-button>
{{--              <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button>--}}<div slot="tip" class="el-upload__tip">最多可以上传5个不大于20M的视频,推荐格式为:mp4、avi、mov</div></el-upload><div v-for="(video, index) in fileListVid" :key="index"><video :src="video.url" controls style="height: 150px;width: 150px;object-fit:fill;"></video></div></el-form-item>
  return {fileListVid:[],},methods: {handleChange(file, fileList) {this.fileListVid = fileList;},beforeRemove(file, fileList) {return this.$confirm(`确定移除 ${file.name}`);},  beforeUploadVideo(file) {let fileSize = file.size / 1024 / 1024 < 20if (// ['video/mp4', 'video/ogg', 'video/flv', 'video/avi', 'video/wmv', 'video/rmvb', 'video/mov'].indexOf(//         file.type,// ) == -1['video/mp4', 'video/avi'].indexOf(file.type,) == -1) {alert('请上传正确的视频格式')return false}if (!fileSize) {alert('视频大小不能超过20MB')return false}},    handleExceed(files, fileList) {this.$set(fileList[0], 'raw', files[0]);this.$set(fileList[0], 'name', files[0].name);this.$refs['uploadRef'].clearFiles();//清除文件this.$refs['uploadRef'].handleStart(files[0]);//选择文件后的赋值方法},handleRemove() {},// 提交维护工序信息submitForm(formName) {let self = this;if (self.fileListPic == null || self.fileListPic == [] || self.fileListPic.length==0) {self.$message.error('请上传图片');return false;}var data = self.createForm;var tmpPic = []var tmpVid = []this.fileListPic.forEach((file) => {tmpPic.push(file.response.url);});this.fileListVid.forEach((file) => {tmpVid.push(file.response.url);});data['pic_url'] = tmpPic;data['video_url'] = tmpVid;data['status'] = self.status;self.$refs[formName].validate((valid) => {if (valid) {let params = {'_token': LA.token,'data': data,};$.ajax({url: "/admin/processbase/store",type: "POST",data: params,dataType: 'json',beforeSend: function (res) {self.fullscreenLoading = true;},success: function (res) {self.$notify({title: res.title,message: res.message,type: res.type});if (res.code == 100) {self.fullscreenLoading = false;self.dialogCreateVisible = false;self.fileListPic = [];self.fileListVid = [];self.getData();}},error: function () {self.fullscreenLoading = false;}});} else {self.$notify({title: '警告',message: '填写的信息有误!!',type: 'warning'});self.fullscreenLoading = false;}});},//停用handleDelete(row) {let that = this;let list_id = row.idif (list_id) {that.$confirm('确认要停用?', '停用后不可恢复!', {confirmButtonText: '确认停用',cancelButtonText: '取消',type: 'success',callback: action => {if (action === 'confirm') {var data = {'_token': LA.token,'id': list_id,};$.ajax({url: "/admin/processbase/delete",type: "DELETE",data: data,dataType: 'json',success: function (data) {that.$notify({title: '停用',message: data.message,type: data.type});//刷新数据that.tableData = that.tableData.filter((sr) => {if (sr != row) {return sr;}});}});}}})}},}

这里是引用:
action=“/admin/uploads/posts?type=2”

    //文件上传public static function upload_ajax_file(Request $request){$type = $request->type;if (!empty($request->file)){$tmp = $request->file;if($type == 1){$path = 'img/'; //图片}elseif($type == 2){$path = 'video/';  //视频}else{$path = getDateH(1);}if ($tmp->isValid()) { //判断文件上传是否有效$FileType = $tmp->getClientOriginalExtension(); //获取文件后缀$FilePath = $tmp->getRealPath(); //获取文件临时存放位置//$FileName = $path.date('Y-m-d') .'/'. uniqid() . '.' . $FileType; //定义文件名$FileName = $path. uniqid() . '.' . $FileType; //定义文件名Storage::disk('admin')->put($FileName, file_get_contents($FilePath)); //存储文件$url  = '/uploads/'.$FileName;return response()->json(['status' => 200, 'url' => $url,'message' => '文件上传完成', 'type' => 'success']);}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/13694.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五步定位性能瓶颈

一、着手测试前的准备&#xff1a;优化数据流向与系统架构分析 在进行性能测试或系统优化之前&#xff0c;明确数据流向和系统架构的细节是至关重要的步骤。这不仅能够帮助识别潜在的瓶颈&#xff0c;还能确保测试用例设计的全面性与针对性。以下是关键步骤和方法&#xff1a;…

实现本地访问云主机,以及在云主机搭建FTP站点

前言 云计算是一种基于互联网的计算模式&#xff0c;通过网络提供按需访问的计算资源和服务。核心概念是把计算能力视作一种公共资源&#xff0c;用户可以根据自身需求动态分配和管理这些资源。 云主机 ECS (Elastic Compute Server)是一种按需获取的云端服务器&#xff0c;提…

142.栈和队列:用栈实现队列(力扣)

题目描述 代码解决 class MyQueue { public:stack<int> stIn; // 输入栈&#xff0c;用于push操作stack<int> stOut; // 输出栈&#xff0c;用于pop和peek操作MyQueue() {}void push(int x) {stIn.push(x); // 将元素压入输入栈}int pop() {// 如果输出栈为空&…

虚拟列表 vue-virtual-scroller 的使用

npm 详情&#xff1a;vue-virtual-scroller - npm (npmjs.com) 这里我使用的是RecycleScroller。 App.vue <template><RecycleScrollerclass"scroller":items"items":item-size"54"v-slot"{ item }"><list-item :it…

Flask Response 对象

文章目录 创建 Response 对象设置响应内容设置响应状态码设置响应头完整的示例拓展设置响应的 cookie重定向响应发送文件作为响应 总结 Flask 是一个 Python Web 框架&#xff0c;用于快速开发 Web 应用程序。在 Flask 中&#xff0c;我们使用 Response 对象来构建 HTTP 响应。…

【论文笔记】advPattern

【论文题目】 advPattern: Physical-World Attacks on Deep Person Re-Identification via Adversarially Transformable Patterns Abstract 本文首次尝试对深度reID实施鲁棒的物理世界攻击。提出了一种新颖的攻击算法&#xff0c;称为advPattern&#xff0c;用于在衣服上生成…

文本转语音软件-TTSMaker

一、TTSMaker介绍 TTSMaker&#xff08;马克配音&#xff09;是一款免费的文本转语音工具&#xff0c;提供语音合成服务&#xff0c;支持多种语言&#xff0c;包括中文、英语、日语、韩语、法语、德语、西班牙语、阿拉伯语等50多种语言&#xff0c;以及超过300种语音风格。 可…

C语言指针相关知识(第四篇章)(非常详细版)

文章目录 前言一、什么是回调函数二、qsort函数的介绍(默认升序排序)三、qsort函数的模拟实现&#xff08;通过冒泡排序&#xff09;总结 前言 本文介绍了回调函数&#xff0c;qsort函数的使用&#xff0c;以用冒泡排序来模拟实现qsort函数 提示&#xff1a;以下是本篇文章正文…

如何在没有密码或Face ID的情况下解锁iPhone

iPhone 是一款以其一流的安全功能而闻名的设备&#xff0c;包括面容 ID 和密码。但是&#xff0c;你有没有想过&#xff0c;如果没有这些安全措施&#xff0c;你是否可以解锁iPhone&#xff1f;无论您是忘记了密码&#xff0c;Face ID不起作用&#xff0c;还是只是对其他方法感…

5.23-

回顾 I0多路复用的原理? 程序首先向操作系统发起一个IO多路复用请求&#xff0c;告诉操作系统需要监视哪些IO通道。这些IO通道可以包括网络套接字、文件描述符等操作系统随后会将这些IO通道放入一个队列中&#xff0c;并在某个IO通道就绪时&#xff08;如数据到达、文件可读…

「YashanDB迁移体验官」Mysql生产环境迁移至YashanDB数据库深度体验

「YashanDB迁移体验官」Mysql生产环境迁移至YashanDB数据库深度体验 1. 前言1.1 产品介绍1.2 产品架构1.3 产品规格1.3.1 数据库版本支持1.3.2 数据类型支持 2. YMP安装2.1 环境说明2.2 执行安装2.3 访问YMP2.3.1 YMP登录界面2.3.2 YMP迁移流程 3. YMP数据迁移3.1 创建数据源3.…

【pytorch】 Win11下cuda,cudnn以及pytorch环境安装

Win11下cuda&#xff0c;cudnn以及pytorch环境安装 CUDA环境安装1. 查看CUDA版本1.1 打开NVIDIA控制面板&#xff0c;可以点右下角的NVIDIA设置1.2 点击系统信息&#xff0c;选择组件查看CUDA版本 2. 下载对应的CUDA版本3. 安装3.1 启动exe文件安装 4. 验证安装结果 CUDNN 环境…

Apache CXF Aegis databinding SSRF 高危漏洞修复

一、漏洞修复 Apache CXF Aegis databinding SSRF漏洞 Spring Web UriComponentsBuilder URL解析不当漏洞 二、修复步骤 1、Apache CXF Aegis databinding SSRF漏洞修复 步骤&#xff1a; 进入服务器搜索 databinding find -name *databinding* 发现版本是3.1.6 果断…

数据结构~~带环链表的环开始的节点位置**两种方法

1.带环链表环开始的位置 &#xff08;1&#xff09;上面的这个测试用例使用的是包含了4个节点的带环链表&#xff0c;我们要找的就是链表里面的环开始的节点的位置&#xff0c;拿这个测试用例而言&#xff0c;就是2这个节点&#xff0c;从这个节点开始&#xff0c;我们的链表就…

【C/C++笔试练习】TCP、IP广播、ARP协议、IP路由器、MAC协议、三次握手、TCP/IP、子网划分年、会抽奖、抄送列表

文章目录 C/C笔试练习选择部分&#xff08;1&#xff09;TCP&#xff08;2&#xff09;IP广播&#xff08;3&#xff09;ARP协议&#xff08;4&#xff09;IP路由器&#xff08;5&#xff09;MAC协议&#xff08;6&#xff09;三次握手&#xff08;7&#xff09;TCP/IP&#xf…

PHP在线制作表白网源码

PHP在线制作表白网源码&#xff0c;送女友个惊喜吧&#xff0c;无数据库&#xff0c;上传就能用&#xff0c;后台/admin&#xff0c;账号密码都是admin 百度网盘&#xff1a;https://pan.baidu.com/s/1rbD2_8IsP9UPLK-cdgEXfA?pwdre59

【全开源】AJAX家政上门服务系统小程序自营+多商家(高级授权)+独立端

基于FastAdmin和原生微信小程序开发的一款同城预约、上门服务、到店核销家政系统&#xff0c;用户端、服务端(高级授权)、门店端(高级授权)各端相互依赖又相互独立&#xff0c;支持选择项目、选择服务人员、选择门店多种下单方式&#xff0c;支持上门服务和到店核销两种服务方式…

我在去哪儿薅到了5块钱火车票代金券,速薅

哈哈&#xff0c;亲爱的薅羊毛小伙伴们&#xff01; 刚刚在去哪儿大佬那儿发现了一个超级薅羊毛福利&#xff01;我只花了短短两分钟&#xff0c;就搞到了一张5块钱火车票代金券&#xff0c;简直是天上掉馅饼的节奏啊&#xff01; 话不多说&#xff0c;薅羊毛的姿势给你们摆好…

代码随想录算法训练营第十六天(py)| 二叉树 | 104.二叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数

104.二叉树的最大深度 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 思路1 迭代法 层序遍历 层序遍历的思路很简单&#xff0c;其结果本来就是按层数记录的&#xff0c;只需返回结果的长度皆可。…

【C语言回顾】联合和枚举

前言1. 联合体1.1 联合体的声明1.2 联合体的特点1.3 联合体的使用 2. 枚举2.1 枚举的声明2.2 枚举的特点2.3 枚举的使用 结语 #include<GUIQU.h> int main { 上期回顾: 【C语言回顾】结构体 个人主页&#xff1a;C_GUIQU 专栏&#xff1a;【C语言学习】 return 一键三连;…