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,一经查实,立即删除!

相关文章

Flutter 中的 EditableText 小部件:全面指南

Flutter 中的 EditableText 小部件&#xff1a;全面指南 在Flutter中&#xff0c;EditableText是一个低级别的文本编辑组件&#xff0c;它提供了构建自定义文本编辑界面的能力。与TextField和TextFormField不同&#xff0c;EditableText提供了更多的灵活性&#xff0c;允许开发…

【LinuxC语言】链接文件

文章目录 前言一、inode索引节点inode的作用为什么inode重要 二、文件链接的定义文件链接是什么硬链接&#xff08;Hard Link&#xff09;软链接&#xff08;符号链接&#xff0c;Symbolic Link&#xff09;硬链接图示&#xff1a;软链接图示&#xff1a; 硬链接应用场景限制和…

五步定位性能瓶颈

一、着手测试前的准备&#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;以下是本篇文章正文…

持续总结中!2024年面试必问 20 道 Redis面试题(四)

上一篇地址&#xff1a;持续总结中&#xff01;2024年面试必问 20 道 Redis面试题&#xff08;三&#xff09;-CSDN博客 七、Redis过期键的删除策略&#xff1f; Redis 过期键的删除策略主要涉及以下几种方式&#xff1a; 1. 定时删除&#xff08;Timed Expiration&#xff…

面试的内容

1.C的三大特性&#xff1a;封装&#xff0c;继承&#xff0c;多态 2.C11的特性 3.NULL与Nullptr的区别: nullptr是一个特殊的空指针常量&#xff0c;不能被隐式转换为其他类型。 NULL 在一些情况下可能会发生隐式类型转换 4.智能指针 5.stl/Qt stl stl容器包含哪些&…

如何在没有密码或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.…

离线模式下载安装gcc-4.8.5

目录 一,下载gcc离线安装包 二,下载gcc依赖包 三,安装gcc 1, 解压 2, 将依赖库放置环境 3, 安装 3.1自动安装 3.1.1 执行依赖库的编译 3.1.2 新建编译目录 3.1.3 配置编译环境 3.1.4 编译 3.1.5 安装 3.2 手动安装 3.2.1 安装GMP-4.3.2 3.2.2 安装mpf…

【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 环境…

【MySQL精通之路】InnoDB-启动选项和系统变量

系统变量可以在服务器启动时设置TRUE或FALSE启用禁用&#xff0c;也可以通过使用--skip前缀来禁用 例如&#xff1a; 要启用或禁用InnoDB自适应哈希索引&#xff0c;可以在命令行中使用--skip-innodb-adaptive-hash-index或--innodb-adaptive-hash-index&#xff0c;或者在配置…

JavaSE : 注解 Annotation

注解 Java中的注解&#xff08;Annotation&#xff09;是一种元数据形式&#xff0c;用于向编译器或JVM提供有关程序元素&#xff08;如类、方法、变量、参数和包&#xff09;的附加信息。注解不会直接影响程序的行为或结构&#xff0c;但它们可以被编译器、开发工具或运行时环…

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 果断…