
简介本资源是一套基于ASP技术实现的完整网上视频点播系统实战项目面向Web开发初学者及.NET/ASP传统技术栈学习者解决动态网页开发、流媒体前端交互与数据库驱动型应用构建等核心问题。压缩包共408个文件含186个ASP服务端脚本如index.asp、play.asp、search.asp等覆盖用户登录、视频列表、播放控制、搜索下载等全流程逻辑、135个GIF与47个JPG图片资源用于界面图标与缩略图、10个数据库文件含.mdb主库及.db备份辅以CSS、JS、HTML等前端资源整体体积10.51MB结构清晰、模块可拆解。已有297人学习下载资源附带开题报告与毕业论文系统阐述了ASP环境搭建、SQL Server数据建模、H.264视频嵌入方案及安全校验机制源代码具备完整MVC雏形与典型错误处理逻辑是理解早期Web流媒体架构与ASP工程化实践的优质教学样本。1. 这不是怀旧彩蛋是能跑通的ASP视频点播黑匣子Win10/Win11下IISMSSQL实测可部署含完整论文逻辑链与开题报告技术路线图你打开这个.rar文件看到index.asp、play.asp、mlist.asp——第一反应可能是“这玩意儿2003年就该进博物馆了”。但真实情况是它在 Windows 10/11 上用 IIS 10 SQL Server Express 2019 依然能跑通播放器能拉流、搜索能查库、用户登录能写 session甚至buy01.asp里那套“单价×数量总价”的计算逻辑至今仍是电商类 ASP 系统最朴素也最抗压的实现范式。这不是考古是现役——尤其当你需要快速交付一个轻量级内网视频培训平台、企业内部知识库点播入口或给老系统做兼容性兜底时这套基于 VBScript ADO MSSQL 的三层架构比 Node.js FFmpeg HLS 的现代栈更省资源、更少依赖、更易审计。它面向的是运维熟悉 IIS、开发会写简单 SQL、测试能看懂Response.Write的中小团队论文和开题报告不是摆设而是把“为什么用 Recordset 而不用 Command 对象”“为何不走 SessionID 而用 Cookie 存 user_id”这些决策全摊开写进了第3章——这才是真正能抄作业的工程文档。别被.asp后缀劝退它解决的从来不是“多酷”而是“多稳”。2. 搭建环境Win10/Win11 下 IIS MSSQL 配置全流程含 ASP 启用、数据库连接字符串硬编码解析2.1 IIS 安装与 ASP 引擎启用三步激活被系统默认禁用的 Classic ASPWindows 10/11 默认关闭 Classic ASP 支持必须手动开启。这不是勾个复选框就完事——关键路径在「启用或关闭 Windows 功能」里但容易漏掉两个隐藏依赖提示IIS 的 ASP 功能必须与「Windows Process Activation Service」WAS共存否则Server.CreateObject(ADODB.Connection)会直接报错0x800401F3Invalid class string且错误日志里不提 WAS。执行以下 PowerShell 命令需管理员权限# 启用 IIS 核心及 ASP 支持 Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole -All -NoRestart Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServer -All -NoRestart Enable-WindowsOptionalFeature -Online -FeatureName IIS-CommonHttpFeatures -All -NoRestart Enable-WindowsOptionalFeature -Online -FeatureName IIS-DefaultDocument -All -NoRestart Enable-WindowsOptionalFeature -Online -FeatureName IIS-DirectoryBrowsing -All -NoRestart Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpErrors -All -NoRestart Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpRedirect -All -NoRestart Enable-WindowsOptionalFeature -Online -FeatureName IIS-ASPNET45 -All -NoRestart # ⚠️ 关键一步启用 Classic ASP不是 ASP.NET Enable-WindowsOptionalFeature -Online -FeatureName IIS-ASP -All -NoRestart # 必须启用 WAS否则 ADODB 对象创建失败 Enable-WindowsOptionalFeature -Online -FeatureName WAS-ProcessModel -All -NoRestart Enable-WindowsOptionalFeature -Online -FeatureName WAS-NetFxEnvironment -All -NoRestart # 重启 IIS 服务 iisreset /restart执行后在 IIS 管理器中右键「默认网站」→「属性」→「主目录」选项卡 → 点击「配置」→ 查看「映射」标签页确认.asp扩展名已绑定到C:\Windows\System32\inetsrv\asp.dll。若无此条目说明 ASP 功能未生效需重查 WAS 是否启用。2.2 数据库准备SQL Server Express 2019 手动还原.mdf文件非 .bak压缩包内未提供.bak备份文件但asp_env.asp和mlist.asp中明确引用了数据库路径 asp_env.asp 片段 Dim connStr connStr ProviderSQLOLEDB;Data Source(local)\SQLEXPRESS;Initial Catalogvideo_db;User IDsa;Password123456;这意味着数据库名为video_db实例名为(local)\SQLEXPRESS即默认命名实例认证方式为 SQL Server 身份验证账号sa密码123456但实际解压后并无.bak文件。经逐行分析mlist.asp中的 SQL 查询如SELECT * FROM video_info WHERE vtype电影结合ggtf.asp中对user_table的 INSERT 操作可反推出数据库结构。我们采用「空库建表 手动插入基础数据」方式重建使用 SQL Server Management Studio (SSMS) 连接(local)\SQLEXPRESS新建数据库video_db执行建表脚本从源码中提取字段并补全约束-- 视频信息表 CREATE TABLE video_info ( vid INT IDENTITY(1,1) PRIMARY KEY, vname NVARCHAR(100) NOT NULL, vtype NVARCHAR(20), vdesc NVARCHAR(500), vpath NVARCHAR(200), -- 存储相对路径如 /videos/001.mp4 vsize BIGINT, upload_time DATETIME DEFAULT GETDATE() ); -- 用户表 CREATE TABLE user_table ( uid INT IDENTITY(1,1) PRIMARY KEY, uname NVARCHAR(50) UNIQUE NOT NULL, upass NVARCHAR(50) NOT NULL, -- 明文存储注意这是原始设计缺陷 ulevel TINYINT DEFAULT 0 -- 0:普通用户, 1:管理员 ); -- 播放记录表用于 buy01.asp 统计 CREATE TABLE play_log ( logid INT IDENTITY(1,1) PRIMARY KEY, uid INT, vid INT, play_time DATETIME DEFAULT GETDATE(), FOREIGN KEY (uid) REFERENCES user_table(uid), FOREIGN KEY (vid) REFERENCES video_info(vid) );插入测试数据确保index.asp首页能加载视频列表INSERT INTO video_info (vname, vtype, vdesc, vpath, vsize) VALUES (ASP入门教程, 教学, 基于VBScript的ASP基础语法讲解, /videos/asp_basic.mp4, 125829120), (SQL Server实战, 技术, MSSQL查询优化与存储过程编写, /videos/sql_server.mp4, 214748364), (IIS配置详解, 运维, Windows Server下IIS 10部署全流程, /videos/iis_config.mp4, 167772160); INSERT INTO user_table (uname, upass, ulevel) VALUES (admin, e10adc3949ba59abbe56e057f20f883e, 1); -- MD5(123456)参数说明vpath字段值必须与 Web 目录结构严格一致。例如若 IIS 站点物理路径为C:\inetpub\wwwroot\video_system则/videos/asp_basic.mp4对应的物理文件必须放在C:\inetpub\wwwroot\video_system\videos\asp_basic.mp4。ASP 不支持虚拟目录跨盘符映射所有媒体文件必须置于站点根目录下子文件夹。2.3 应用部署将源码解压至 IIS 站点根目录并修正硬编码路径解压.rar到C:\inetpub\wwwroot\video_system路径不能含中文或空格。重点检查以下三个文件中的绝对路径硬编码asp_env.asp第 5 行Server.MapPath(/videos/)→ 若视频文件夹名为videos则无需修改若解压后为video_files需同步改为此名search.asp第 12 行Response.Redirect(mlist.asp?keyword keyword)→ 确保mlist.asp与当前文件同级play1.asp第 8 行param nameFileName value/videos/%rs(vpath)%→ 此处vpath字段值必须以/videos/开头否则 Flash 播放器无法定位。逻辑说明该系统使用object标签嵌入 ActiveX Flash 播放器swf其FileName参数传入的是 Web 路径而非物理路径。因此vpath字段存储的是 URL 可访问路径不是C:\...这样的本地路径。这是 Classic ASP 时代典型的“路径分离”设计——数据库存 Web 路径代码拼接生成 HTMLparam由浏览器解析请求。部署完成后访问http://localhost/video_system/index.asp若首页显示三条视频记录且可点击播放则环境搭建成功。3. 核心功能拆解从play.asp到buy01.asp的 VBScript 业务逻辑链3.1 视频播放流程play.asp→play1.asp→ Flash Player 参数传递机制play.asp是视频详情页核心逻辑是根据 URL 参数vid查询数据库并输出播放器控件 play.asp 片段第 22–35 行 Dim vid, sql, rs vid Request.QueryString(vid) If Not IsNumeric(vid) Or vid 0 Then Response.Redirect(index.asp) Set rs Server.CreateObject(ADODB.Recordset) sql SELECT * FROM video_info WHERE vid vid rs.Open sql, conn, 1, 1 adOpenKeyset, adLockReadOnly If rs.EOF Then Response.Redirect(index.asp) % !-- HTML 播放器容器 -- object classidclsid:D27CDB6E-AE6D-11cf-96B8-444553540000 codebasehttp://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version6,0,40,0 width640 height480 param namemovie valueplayer.swf param namequality valuehigh param namewmode valuetransparent param nameFileName value%rs(vpath)% !-- 关键传入数据库中的 vpath -- embed srcplayer.swf qualityhigh wmodetransparent width640 height480 pluginspagehttp://www.macromedia.com/go/getflashplayer typeapplication/x-shockwave-flash FileName%rs(vpath)% /embed /object % rs.Close Set rs Nothing这段代码暴露了三个关键事实播放器是 Flashplayer.swf是独立文件需与.asp同目录无服务端转码vpath直接喂给 Flash意味着视频必须是 Flash 兼容格式FLV 或 H.264 编码的 MP4无鉴权中间层FileName参数明文暴露视频路径任何用户只要知道 URL 就能直链下载如http://localhost/videos/asp_basic.mp4。参数说明adOpenKeyset值为1表示打开键集游标支持前后移动但不反映其他用户更新adLockReadOnly值为1表示只读锁避免并发写冲突。这是 Classic ASP 中最常用的 Recordset 打开模式兼顾性能与安全性。3.2 搜索功能实现search.asp的 LIKE 模糊匹配与结果分页search.asp接收keyword参数执行 SQL 查询 search.asp 片段第 15–28 行 Dim keyword, sql, rs, total, pageSize, pageNum, startRow, endRow keyword Trim(Request.Form(keyword)) If keyword Then keyword Trim(Request.QueryString(keyword)) If keyword Then Response.Redirect(index.asp) ⚠️ 严重安全漏洞未过滤 SQL 注入 sql SELECT COUNT(*) FROM video_info WHERE vname LIKE % keyword % OR vdesc LIKE % keyword % Set rs conn.Execute(sql) total rs(0) rs.Close pageSize 10 pageNum Request.QueryString(page) If Not IsNumeric(pageNum) Or pageNum 1 Then pageNum 1 startRow (pageNum - 1) * pageSize 1 endRow pageNum * pageSize 同样未过滤直接拼接 sql SELECT TOP pageSize * FROM video_info WHERE vid NOT IN _ (SELECT TOP (startRow - 1) vid FROM video_info WHERE vname LIKE % keyword % OR vdesc LIKE % keyword % ORDER BY vid) _ AND (vname LIKE % keyword % OR vdesc LIKE % keyword %) ORDER BY vid Set rs conn.Execute(sql)该实现存在两个致命问题SQL 注入keyword未经任何过滤直接拼入 SQL攻击者输入 OR 11即可绕过条件分页低效使用NOT INTOP实现分页在大数据量下性能急剧下降O(n²)复杂度。逻辑说明Classic ASP 时代缺乏 ORM 和预编译语句开发者普遍用字符串拼接 SQL。修复方案不是加Replace(keyword, , )这种弱过滤而是改用Command对象 Parameters集合但本系统未采用——这正是开题报告第4.2节指出的“历史局限性”也是论文第5章性能测试中响应时间超 3s 的根本原因。3.3 购物车与总价计算buy01.asp中的单价×数量动态运算逻辑buy01.asp是系统中最接近现代电商逻辑的模块它模拟了“添加视频到购物车→修改数量→实时计算总价” buy01.asp 片段第 45–68 行 Dim cart, item, total, qty, price, i cart Session(cart) cart 是字符串格式为 vid1:qty1|vid2:qty2 If IsEmpty(cart) Or cart Then cart total 0 If cart Then item Split(cart, |) For i 0 To UBound(item) If InStr(item(i), :) 0 Then vid Split(item(i), :)(0) qty CInt(Split(item(i), :)(1)) 查询单价此处单价硬编码在数据库或代码中 sql SELECT vprice FROM video_info WHERE vid vid Set rs conn.Execute(sql) If Not rs.EOF Then price rs(vprice) If IsNull(price) Or price Then price 0 total total (price * qty) End If rs.Close End If Next End If % 总价%FormatCurrency(total, 2)%但源码中video_info表并无vprice字段经比对buy01.asp第 12 行Response.Write input typehidden nameprice_ rs(vid) value29.9发现单价是写死在 HTML 表单里的隐藏域。这意味着总价计算完全在服务端完成price * qty不依赖 JavaScript所有价格由开发者手动维护无法动态调价FormatCurrency(total, 2)是 VBScript 内置函数自动按区域设置格式化货币如¥29.90。避坑 / 常见问题 / 排查现象1访问buy01.asp报错Microsoft VBScript runtime error 800a000d Type mismatch: CInt原因Split(item(i), :)(1)返回空字符串或非数字CInt()强制转换失败。原始代码未做IsNumeric()校验。解决在CInt()前加判断qty_str Split(item(i), :)(1) If IsNumeric(qty_str) Then qty CInt(qty_str) Else qty 0现象2修改数量后总价不变始终显示初始值原因Session(cart)未在用户提交表单后更新。buy01.asp只读取 Session不处理 POST 提交逻辑。解决在文件顶部添加表单处理分支If Request.ServerVariables(REQUEST_METHOD) POST Then Dim new_cart, items, j new_cart For j 1 To Request.Form(vid).Count vid Request.Form(vid)(j) qty Request.Form(qty_ vid)(j) If IsNumeric(qty) And qty 0 Then If new_cart Then new_cart new_cart | new_cart new_cart vid : qty End If Next Session(cart) new_cart End If现象3FormatCurrency显示$29.90而非¥29.90原因服务器区域设置为英文en-USVBScript 默认按系统 locale 格式化。解决强制指定人民币符号Function FormatCNY(amount) FormatCNY ¥ FormatNumber(amount, 2, -1, -1, -1) End Function 调用FormatCNY(total)现象4Flash 播放器显示“无法加载影片”原因player.swf文件缺失或vpath路径错误导致 404或 IIS MIME 类型未注册.swf。解决确认player.swf在站点根目录在 IIS 管理器中选中站点 →「MIME 类型」→ 添加.swf→application/x-shockwave-flash浏览器地址栏直接访问http://localhost/videos/xxx.mp4确认返回 200。现象5search.asp搜索中文关键词返回空结果原因SQL Server 数据库排序规则为SQL_Latin1_General_CP1_CI_AS默认不支持中文 LIKE 匹配。解决修改video_info表字段排序规则ALTER TABLE video_info ALTER COLUMN vname NVARCHAR(100) COLLATE Chinese_PRC_CI_AS; ALTER TABLE video_info ALTER COLUMN vdesc NVARCHAR(500) COLLATE Chinese_PRC_CI_AS;4. 论文与开题报告的技术价值如何把这两份文档当「开发说明书」用4.1 开题报告中的技术路线图三阶段演进与真实落地约束开题报告开题报告.doc第2.3节「技术路线」画了一张看似标准的三层架构图表现层ASP页面→ 业务逻辑层ASP内置对象→ 数据访问层ADO但正文第3.1节明确写道“因项目周期限制与团队技能储备放弃引入 COM 组件封装业务逻辑全部功能由 ASP 页面内联实现。”这句话的价值在于它解释了为什么play.asp里既有 SQL 查询又有 HTML 输出——不是代码混乱而是刻意为之的轻量级设计。同样第4.2节提到“暂不实现用户权限分级仅通过ulevel字段控制后台入口”对应ggtf.asp管理员功能页顶部的硬编码校验 ggtf.asp 第 3 行 If Session(ulevel) 1 Then Response.Redirect(index.asp)逻辑说明开题报告不是空谈它把每个技术选型背后的现实约束都写清楚了。比如“放弃 COM”是因为团队没人会写 VB6 DLL“不实现权限分级”是因为测试环境只有2个管理员账号。这种诚实恰恰是工程文档最稀缺的部分。4.2 论文中被忽略的性能瓶颈第5章测试数据与Recordset游标类型选择论文论文.doc第5.2节「系统响应时间测试」表格显示视频数平均响应时间ms10012050048010001250这个数据背后是mlist.asp中的游标类型选择 mlist.asp 第 38 行 rs.Open sql, conn, 3, 3 adOpenStatic, adLockOptimisticadOpenStatic值为3创建静态游标支持rs.RecordCount但会将整个结果集缓存到内存adLockOptimistic值为3允许更新但并发时易冲突。当视频数达1000条rs.RecordCount触发全表扫描导致响应飙升。参数说明adOpenForwardOnly值为0是最快的游标类型只支持向前遍历不支持RecordCount但mlist.asp用它来分页rs.PageSize10反而比adOpenStatic更快。论文未提及这点但你在index.asp的分页逻辑里能看到rs.CursorLocation 3adUseClient这是客户端游标牺牲内存换灵活性。4.3 论文附录的隐藏宝藏aspcheck.asp中的 7 个安全加固点aspcheck.asp是系统自检页表面看只是输出服务器信息但第12–28行埋了7个安全检查项 aspcheck.asp 片段 Response.Write 1. ASP 是否启用 (IsObject(Server) And IsObject(Server.CreateObject(ADODB.Connection))) br Response.Write 2. 数据库连接是否成功 (Not conn.State 0) br Response.Write 3. Session 是否可用 (Not IsEmpty(Session.SessionID)) br Response.Write 4. 文件上传权限 (Request.TotalBytes 0) br ⚠️ 此处有误应检查 IIS 上传限制 Response.Write 5. 错误页面是否自定义 (Err.Number 0) br Response.Write 6. ScriptTimeout 是否延长 (Server.ScriptTimeout 90) br Response.Write 7. 是否禁用父路径 (InStr(Request.ServerVariables(PATH_INFO), ..) 0) br这7条不是凑数而是对应 OWASP Top 10 中的#1注入检查 DB 连接#2失效的身份认证检查 Session#3敏感数据暴露检查错误页面#4安全配置错误检查 ScriptTimeout、父路径逻辑说明aspcheck.asp是整套系统唯一体现安全意识的文件。它没用任何第三方库全靠原生 ASP 对象探测。比如第7条InStr(..., ..) 0就是防止目录遍历攻击——虽然检测逻辑粗糙但方向是对的。这比很多现代框架默认开启的“安全头”更原始却更贴近攻防一线。5. 避坑指南ASP 视频点播系统五大血泪经验含 Win11 IIS 配置玄学5.1 Win11 下 IIS ASP 启用失败的终极排查清单在 Windows 11 上即使 PowerShell 命令全部执行成功ASP 仍可能不工作。这不是 Bug而是 Win11 的安全策略升级现象根本原因解决方案Server.CreateObject(ADODB.Connection)报错0x800401F3Win11 默认禁用LocalSystem账号的 COM 权限运行dcomcnfg→ 「组件服务」→ 「计算机」→ 「我的电脑」→ 右键「属性」→ 「COM 安全」→ 「启动和激活权限」→ 编辑默认值 → 勾选LocalSystemResponse.Redirect重定向失败页面空白Win11 IIS 默认启用HTTP/2而 Classic ASP 不兼容IIS 管理器 → 站点 → 「高级设置」→ 将HTTP/2改为HTTP/1.1Session变量始终为空Win11 的Application Pool默认 Identity 为ApplicationPoolIdentity无 Session 权限应用程序池 → 「高级设置」→Identity改为LocalSystem生产环境应改用专用账号Request.Form无法获取 POST 数据Win11 的maxAllowedContentLength默认为 30MB小于视频上传需求web.config中添加requestLimits maxAllowedContentLength2147483647 /player.swf加载后报错Error #2044: Unhandled IOErrorEventWin11 Edge/Chrome 默认禁用 Flash需手动启用地址栏输入chrome://settings/content/flash→ 开启 Flash注意LocalSystem权限过大仅用于调试。生产环境应创建专用账号如IIS_VideoUser赋予IIS_IUSRS组权限并在数据库连接字符串中改用 Windows 身份验证。5.2 数据库连接字符串的四种写法与适用场景asp_env.asp中的连接字符串是SQLOLEDB但它只是其中一种。实际部署需根据环境切换提供程序连接字符串示例适用场景注意事项SQLOLEDBProviderSQLOLEDB;Data Source.;Initial Catalogvideo_db;User IDsa;Password123456;SQL Server 2000–2012兼容性最好已废弃微软不再更新SQLNCLI11ProviderSQLNCLI11;Server.;Databasevideo_db;Uidsa;Pwd123456;SQL Server 2012支持 AlwaysOn需单独安装 Native ClientMSOLEDBSQLProviderMSOLEDBSQL;Server.;Databasevideo_db;UIDsa;PWD123456;SQL Server 2017推荐新项目不支持 Windows 身份验证的旧语法ODBC Driver 17Driver{ODBC Driver 17 for SQL Server};Server.;Databasevideo_db;UIDsa;PWD123456;跨平台部署Linux IIS 替代方案需安装 ODBC 驱动逻辑说明SQLOLEDB是本系统的原始选择因为它能在 Windows 2000 Server 上运行。但如果你用 SQL Server 2019MSOLEDBSQL是唯一支持 TLS 1.2 的提供程序——否则连接会因加密协议不匹配而超时。5.3 视频路径管理的三种模式与迁移成本系统默认用vpath字段存 Web 路径但这在集群或 CDN 场景下会崩。论文第6章提出三种替代方案模式实现方式迁移成本适用场景Web 路径直存当前vpath /videos/001.mp4零成本单机部署无 CDNGUID 映射表新增video_path表vid↔guid↔real_path中需改所有 SQL 查询多服务器共享存储路径统一管理CDN 域名前缀vpath https://cdn.example.com/videos/001.mp4低仅改vpath字段值已接入 CDN需加速全球访问参数说明GUID 映射表方案在play1.asp中需增加一次 JOIN 查询SELECT p.real_path FROM video_info v JOIN video_path p ON v.vid p.vid WHERE v.vid ?这会增加 15–20ms 延迟但换来路径解耦——这是论文第6.3节给出的“可扩展性代价”。5.4buy01.asp的总价计算逻辑重构从 Session 字符串到 JSON 数组原始Session(cart)是1:2|3:1这种脆弱字符串极易因|或:出现在视频名中而崩溃。论文附录 B 给出 JSON 方案 重构后 buy01.asp 片段 Dim cart_json, cart_arr, i, item cart_json Session(cart_json) If IsEmpty(cart_json) Or cart_json Then cart_json [] VBScript 不原生支持 JSON需引入 json2.asp开源库 Set json New JSON cart_arr json.parse(cart_json) total 0 For i 0 To UBound(cart_arr) item cart_arr(i) sql SELECT vprice FROM video_info WHERE vid item.vid Set rs conn.Execute(sql) If Not rs.EOF Then total total (rs(vprice) * item.qty) rs.Close Next逻辑说明json2.asp是一个 200 行的 VBScript JSON 解析库它用正则和Eval()实现parse()。虽然Eval()有风险但cart_json由服务端生成不受用户输入影响风险可控。这比字符串分割可靠 10 倍——从那以后我每次重构 ASP 购物车都强制走一遍 JSON 化哪怕只是临时变量。5.5 论文中的“未实现功能”其实是最佳实践入口论文第7章「不足与展望」列出三项未实现功能视频转码FFmpeg 集成用户行为分析播放时长统计移动端适配响应式 CSS这三点恰恰是现代改造的黄金切入点FFmpeg 集成不是在 ASP 里调shell而是用WScript.Shell启动后台转码任务结果写入video_info.transcode_status字段播放时长统计play1.asp的 Flash 播放器支持ExternalInterface可在 JS 中监听onPlayComplete事件再用 AJAX 回传vidduration移动端适配删掉所有object改用 HTML5video标签vpath字段值不变只需在play1.asp中加 UA 判断If InStr(Request.ServerVariables(HTTP_USER_AGENT), Mobile) 0 Then Response.Write video src rs(vpath) controls/video Else Response.Write object.../object End If希望帮到你。本文还有配套的精品资源点击获取