fastadmin框架同时使用 阿里云oss和阿里云点播
背景
项目的实际需求中既要用到阿里云oss产品又用到阿里云点播系统,实现完美的统一。设置两个地址downUrl,thirdCode。分别代表阿里云oss上传路径和阿里云点播系统vId。
实现
默认框架你已经集成好阿里云oss集成工作,前端html页面实现
<form id="edit-form" class="form-horizontal form-ajax" role="form" data-toggle="validator" method="POST" action=""><input name="row[id]" type="hidden" value="{$row.id}" ><div class="form-group" style="display: none"><label for="c-title" class="control-label col-xs-12 col-sm-2">{:__('作者')}:</label><div class="col-xs-12 col-sm-8"><input id="c-title" data-rule="" class="form-control" name="row[author]" type="text" value="{$row.author|htmlentities}" placeholder="请输作者"></div></div><div class="form-group"><label class="control-label col-xs-12 col-sm-2">{:__('音视频')}:</label><div class="col-xs-12 col-sm-8"><div class="input-group"><input id="c-downurl" data-rule="" class="form-control" size="255" name="row[downurl]" type="text" value="{$row.downurl}"><div class="input-group-addon no-border no-padding"><span><button type="button" id="plupload-downurl" class="btn btn-danger plupload" data-input-id="c-downurl" data-mimetype="*" data-multiple="false" data-preview-id="p-downurl"><i class="fa fa-upload"></i> {:__('Upload')}</button></span><span><button type="button" id="fachoose-downurl" class="btn btn-primary fachoose" data-input-id="c-downurl" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span></div><span class="msg-box n-right" for="c-downurl"></span></div><ul class="row list-inline plupload-preview" id="p-downurl"></ul></div></div><div class="form-group layer-footer"><label class="control-label col-xs-12 col-sm-2"></label><div class="col-xs-12 col-sm-8"><button type="submit" class="btn btn-success btn-embossed" id="submit">{:__('OK')}</button><button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button></div></div>
</form>
table.bootstrapTable({url: $.fn.bootstrapTable.defaults.extend.index_url,showToggle: false,showColumns: false,showExport: false,//commonSearch: false,search:false,fixedColumns: true,fixedRightNumber: 1,columns: [[{checkbox: true},{field: 'id', title: __('序号'),operate:false},{field: 'category.name', title: __('格式'),operate:false,formatter:Table.api.formatter.label},{field: 'categoryId', title: __('格式'),visible: false,searchList: $.getJSON("ajax/filecate")},{field: 'title',title: __('标题'),operate:'LIKE',cellStyle: {css: {"max-width": "500px","white-space":"nowrap","overflow":"hidden","text-overflow":"ellipsis"}}},{field: 'secondId', title: __('分类'), visible: false,searchList: $.getJSON("ajax/schooldata")},{field: 'thumb', title: __('缩略图'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.image},{field: 'third_code', title: __('三方平台'),operate: false},{field: 'createtime', title: __('提交时间'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true}, {field: 'updatetime', title: __('更新时间'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true}, {field: 'status', title: __('Status'), formatter: Controller.api.formatter.station, searchList: {0: __('草稿'), 1: __('发布')}},{field: 'operate', title: __('Operate'), buttons: [{name: '视频转码',text: '',title: __('转码'),classname: 'btn btn-xs btn-success btn-view btn-dialog',icon: 'fa fa-trademark',url: 'school/data/transfer?id={ids}',refresh:true ,visible: function (row) {//返回true时按钮显示,返回false隐藏if(row.categoryId===232){if(row.third_plat==0||!row.third_plat) return true;}return false}},{name: 'detail',text: '', title: '编辑',icon: 'fa fa-pencil',classname: 'btn btn-xs btn-info btn-addtabs',url: 'school/data/edit'}], table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}]]});
使用ajax异常实现上传
public function uploadV(){Config::set('default_return_type', 'json');$attachment = null;$res="";//默认普通上传文件$file = $this->request->post('url');//print_r($file->getMime());//print_r($file->getFilename());//print_r($file->getRealPath());require_once APP_PATH. DIRECTORY_SEPARATOR . 'voduploadsdk' . DIRECTORY_SEPARATOR . 'Autoloader.php';try {//$upload = new Upload($file);//print_r($upload->getFile());//$attachment = $upload->upload();$apiRegionId = 'cn-beijing';$uploader = new \AliyunVodUploader(Config::get('aliVod.accessKeyId'), Config::get('aliVod.accessKeySecret'), $apiRegionId);$fileURL="http://xxxxxx".$file;$uploadVideoRequest = new \UploadVideoRequest($fileURL, "课程");$res = $uploader->uploadWebVideo($uploadVideoRequest);if ($res) { // 根据你的逻辑,可能需要检查 $res 是否表示成功return json(['status' => 'success', 'data' => $res]);} else {// 处理 $res 为空或失败的情况return json(['status' => 'error', 'message' => '上传失败,未获取到有效响应']);}} catch (\Exception $e) {return json(['status' => 'error', 'message' => $e->getMessage()]);}}
可以完美完成。本功能实现大概用了一周,遇到很多问题,包括sdk引入层级问题,ajax异步格式返回等待
相关文章:
fastadmin框架同时使用 阿里云oss和阿里云点播
背景 项目的实际需求中既要用到阿里云oss产品又用到阿里云点播系统,实现完美的统一。设置两个地址downUrl,thirdCode。分别代表阿里云oss上传路径和阿里云点播系统vId。 实现 默认框架你已经集成好阿里云oss集成工作,前端html页面实现 <…...
Java-JMX 组件架构即详解
JMX架构由三个主要组件构成: MBeans(Managed Beans):代表可管理的资源,是JMX的核心。MBean可以是Java类或接口,提供了管理操作的接口,如获取系统信息、设置参数等。MBeanServer&#x…...
unity打包web,发送post请求,获取地址栏参数,解决TypeError:s.replaceAll is not a function
发送post请求 public string url "http://XXXXXXXXX";// 请求数据public string postData "{\"user_id\": 1}";// Start is called before the first frame updatevoid Start(){// Post();StartCoroutine(PostRequestCoroutine(url, postData…...
java+ssm+mysql校园物品租赁网
项目介绍: 使用javassmmysql开发的校园物品租赁网,系统包含管理员、用户角色,功能如下: 管理员:用户管理;物品管理(物品种类、物品信息、评论信息);订单管理࿱…...
Spring Boot中实现JPA多数据源配置指南
本文还有配套的精品资源,点击获取 简介:本文详细介绍了在Spring Boot项目中配置和使用JPA进行多数据源管理的步骤。从引入依赖开始,到配置数据源、创建DataSource bean、定义实体和Repository,最后到配置事务管理器和使用多数据…...
服务器加固
1.服务器密码复杂度 密码最小长度,密码复杂度策略 vim /etc/pam.d/system-auth --------------- #密码配置 #ucredit:大写字母个数;lcredit:小写字母个数;dcredit:数字个数;ocredit:…...
探索CSS中的背景图片属性,让你的网页更加美观
导语:在网页设计中,背景图片的运用能够丰富页面视觉效果,提升用户体验。本文将详细介绍CSS中背景图片的相关属性,帮助大家更好地掌握这一技能。 一、背景图片基本属性 1、background-image 该属性用于设置元素的背景图片。语法如…...
Oracle的打开游标(OPEN_CURSORS)
一、OPEN_CURSORS 概述 OPEN_CURSORS 指定会话一次可以拥有的打开游标(私有 SQL 区域的句柄)的最大数量。可以使用此参数来防止会话打开过多的游标。 OPEN_CURSORS参数说明 特性 描述 参数类型 Integer 默认值 50 修改方式 ALTER SYSTEM PDB级别…...
数值分析—数值积分
研究背景 积分的数学解法为牛顿莱布尼兹公式,数学表示为 ∫ a b f ( x ) d x F ( b ) − F ( a ) \int_{a}^{b} f(x)dxF(b)-F(a) ∫abf(x)dxF(b)−F(a),但应用该方法有如下困难: 1, f ( x ) f(x) f(x)的原函数有时不能用初等函…...
克服大规模语言模型限制,构建新的应用方法——LangChain
大模型 大模型的出现和落地开启了人工智能(AI)新一轮的信息技术革命,改变了人们的生 活方式、工作方式和思维方式。大模型的落地需要数据、算力和算法三大要素。经过几 年发展,大模型的数据集(包括多模态数据集)制作已经形成了规约,Meta、Go…...
计算机网络 —— HTTPS 协议
前一篇文章:计算机网络 —— HTTP 协议(详解)-CSDN博客 目录 前言 一、HTTPS 协议简介 二、HTTPS 工作过程 1.对称加密 2.非对称加密 3.中间人攻击 4.引入证书 三、HTTPS 常见问题 1.中间人能否篡改证书? 2.中间人能否调…...
React第十七章(useRef)
useRef 当你在React中需要处理DOM元素或需要在组件渲染之间保持持久性数据时,便可以使用useRef。 import { useRef } from react; const refValue useRef(initialValue) refValue.current // 访问ref的值 类似于vue的ref,Vue的ref是.value,其次就是vu…...
React第十五节useReducer使用详解差异
useReducer() 的用法注意事项 1、 概述: useReducer() 常用于管理复杂的状态更新逻辑,特别是在状态更新依赖于多个条件或动作时,useReducer 提供了一种更加结构化和可维护的方式来处理状态。可以将更新函数写在组件外面 它与 useState() 相…...
NanoLog起步笔记-5-客户端简要描述
nonolog起步笔记-5-客户端简要描述 客户端的简要的设计图路notify模式服务端最好分两个核 NanoLog::setLogLevel(NOTICE);从 NANO_LOG 开始NANO_LOGcompiling time的语句getNumNibblesNeeded:得到prompt中,number的数量countFmtParams:得到所…...
Flink:入门介绍
目录 一、Flink简介 2.1 Flink 架构 2.2 Flink 应用程序 运行模式 二、Flink 集群 部署 2.1 本地集群模式 2.1.1 安装JDK编辑 2.1.2 下载、解压 Flink 2.1.3 启动集群 2.1.4 停止集群 2.2 Standalone 模式 2.2.0 集群规划 2.2.1 安装JDK 2.2.2 设置免密登录 2…...
目标跟踪领域经典论文解析
亲爱的小伙伴们😘,在求知的漫漫旅途中,若你对深度学习的奥秘、JAVA 、PYTHON与SAP 的奇妙世界,亦或是读研论文的撰写攻略有所探寻🧐,那不妨给我一个小小的关注吧🥰。我会精心筹备,在…...
网络编程 | TCP套接字通信及编程实现经验教程
1、TCP基础铺垫 TCP/IP协议簇中包含了如TCP、UDP、IP、ICMP、ARP、HTTP等通信协议。TCP协议是TCP/IP协议簇中最为常见且重要的通信方式之一,它为互联网上的数据传输提供了可靠性和连接管理。 TCP(Transmission Control Protocol,传输控制协议…...
SAP导出表结构并保存到Excel 源码程序
SAP导出表结构并保存到Excel,方便写代码时复制粘贴 经常做接口,需要copy表结构,找到了这样一个程程,特别有用。 01. 先看结果...
Linux下redis环境的搭建
1.redis的下载 redis官网下载redis的linux压缩包,官网地址:Redis下载 网盘链接: 通过网盘分享的文件:redis-5.0.4.tar.gz 链接: https://pan.baidu.com/s/1cz3ifYrDcHWZXmT1fNzBrQ?pwdehgj 提取码: ehgj 2.redis安装与配置 将包上传到 /…...
REDMI瞄准游戏赛道,推出小屏平板
近日,REDMI推出了一款8.8英寸的小屏平板,引发市场关注。该平板采用LCD屏幕,搭载天玑9400处理器,定位游戏市场,意在开拓小屏平板的新领域。 小屏平板新尝试 这款REDMI平板未追随大屏潮流,而是选择了8…...
ASL1架构规范语言:Arm处理器设计的核心工具
1. ASL1架构规范语言概述ASL1(Architecture Specification Language)是Arm公司专为处理器架构设计开发的领域特定语言(DSL),主要用于精确描述Arm架构参考手册中的指令集行为。这种语言在2025年发布的A-profile架构参考…...
企者不立,跨者不行,SAP BTP 开发里的克制、边界与长久之道
老子这句话很像一段架构评审意见。站得太高,脚跟离地,反而站不稳;步子跨得太大,身体失衡,反而走不远;只相信自己的视角,反而看不明;只认自己的判断,反而不能显明价值;自我夸功,功劳反而站不住;自我矜持,生命力反而不长。把这段话放到 SAP BTP 开发里,它不是劝我们…...
Codex Chrome 插件来了|但国内用户安装失败、连接不上、怎么用。这一篇全部搞定
今天早上更新了下Codex最新版本,发现有一个控制Chrome的选项,尝鲜一下,这是什么功能。但是当你真正去下载的时候发现根本不可用,因为暂时对国内用户还没有开发,你会看到下面这个页面。上网查了下,目前还没有…...
轻量级注意力新范式:ECA-Net如何用一维卷积重塑通道交互
1. 从SE-Net到ECA-Net:通道注意力的轻量化革命 在计算机视觉领域,注意力机制就像给神经网络装上了"智能探照灯",让模型能够自动聚焦在最重要的特征上。SE-Net(Squeeze-and-Excitation Network)作为通道注意力…...
终极指南:如何用NPYViewer快速查看和可视化NumPy数组数据
终极指南:如何用NPYViewer快速查看和可视化NumPy数组数据 【免费下载链接】NPYViewer Load and view .npy files containing 2D and 1D NumPy arrays. 项目地址: https://gitcode.com/gh_mirrors/np/NPYViewer 还在为NumPy数组数据查看而烦恼吗?当…...
塞尔达传说旷野之息存档编辑器终极指南:5分钟掌握武器和资源修改技巧
塞尔达传说旷野之息存档编辑器终极指南:5分钟掌握武器和资源修改技巧 【免费下载链接】BOTW-Save-Editor-GUI A Work in Progress Save Editor for BOTW 项目地址: https://gitcode.com/gh_mirrors/bo/BOTW-Save-Editor-GUI 你是否曾经在《塞尔达传说&#x…...
FreeRDP-WebConnect实战:在Windows上为老旧系统(如Server 2008)搭建一个轻量级Web管理门户
FreeRDP-WebConnect实战:为老旧Windows系统构建安全Web管理门户 老旧Windows服务器在企业中仍承担着关键业务角色,但直接暴露RDP端口的安全隐患与繁琐的VPN管理让运维团队头疼不已。本文将手把手教你如何通过FreeRDP-WebConnect构建一个既安全又便捷的We…...
Java源码学习:深入剖析Java的concurrent包源码之`Lock` 接口的设计哲学与云原生演进
引言:超越 synchronized 的灵活并发控制 在 Java 的并发世界中,synchronized 关键字曾是开发者控制线程同步的唯一选择。然而,随着应用复杂度的提升,其固有的局限性——如无法中断、无法设置超时、严格的块结构等——逐渐成为构建…...
在团队中统一AI开发环境使用TaoToken CLI一键配置
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在团队中统一AI开发环境使用TaoToken CLI一键配置 对于需要多人协作的AI应用开发团队而言,一个常见的问题是开发环境配…...
Taotoken用量看板如何帮助个人开发者控制成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken用量看板如何帮助个人开发者控制成本 对于个人开发者或小型工作室而言,在探索和集成大模型能力时,…...
