php+引用swf,php – 嵌入flv和swf位于webroot之外

博客内容讲述了作者在使用PHP处理Webroot外的文件上传,并通过media.php脚本来提供图像、文档和视频的访问。遇到的问题是,尽管FLV视频能够被转换和下载,但无法通过JWPlayer正确嵌入。问题在于JWPlayer的flashvars参数解析错误,解决方案是将文件参数进行URL编码。
摘要由CSDN通过智能技术生成

我有一个在webroot之外上传的脚本.通过网站,我然后将用户链接到图像文档等.

因此,对于图像,链接将是:

media.php?file=nameoffile.jpg&user=userid&folder=images

然后用它来显示图像:

media.php?file=nameoffile.jpg&user=userid&folder=images

这适用于图像并提供下载文档的链接.

我面临的问题是嵌入,我使用ffmpeg将所有允许的视频类型转换为flv(这些视频经过测试并且运行良好),但是当我尝试嵌入flv视频时,它永远不会工作(它与文件的直接链接一起使用)只是不通过media.php).如果可能的话我也想嵌入.swf.

我正在使用jwplayer嵌入(使用文件的直接链接而不是通过media.php)

type="application/x-shockwave-flash"

id="player2"

name="player2"

src="player.swf"

width="328"

height="200"

allowscriptaccess="always"

allowfullscreen="true"

flashvars="file=media.php?file=nameoffile.flv&user=userid&folder=videos"

/>

这是media.php:

$path_parts = pathinfo($_SERVER['REQUEST_URI']);

$file = basename(urldecode($_GET['file']));

$user = basename(urldecode($_GET['user']));

$folder = basename(urldecode($_GET['folder']));

$ext = pathinfo($file, PATHINFO_EXTENSION);

$fileDir = 'pathoutsidewebroot';

$filePath = $fileDir . $file;

switch(

$ext) {

case "flv": $ctype="video/x-flv"; break;

// adobe

case "pdf": $ctype="application/pdf"; break;

// ms office

case "doc": $ctype="application/msword"; break;

case "rtf": $ctype="application/rtf"; break;

case "xls": $ctype="application/vnd.ms-excel"; break;

case "ppt": $ctype="application/vnd.ms-powerpoint"; break;

// open office

case "odt": $ctype="application/vnd.oasis.opendocument.text"; break;

case "ods": $ctype="application/vnd.oasis.opendocument.spreadsheet"; break;

default: $ctype = "application/force-download"; break;

}

if(in_array($ext, $valid_formats_vid)){

if (file_exists($filePath)) {

header('Content-Type: ' . mime_content_type($filePath));

header('Content-Length: ' . filesize($filePath));

readfile($filePath);

}

}

else if(in_array($ext, $valid_formats_img)) {

if (file_exists($filePath)) {

header('Content-Type: ' . mime_content_type($filePath));

header('Content-Length: ' . filesize($filePath));

readfile($filePath);

}

}

else if(in_array($ext, $valid_formats_docs)) {

if (file_exists($filePath))

{

header("Pragma: public");

header("Expires: 0");

header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

header("Cache-Control: private",false);

header("Content-Type: $ctype");

header("Content-Disposition: attachment; filename=\"".basename($filePath)."\";");

header("Content-Transfer-Encoding: binary");

header("Content-Length: ".@filesize($filePath));

set_time_limit(0);

@readfile($filePath) or die("File not found."); }

}

来自media.php的嵌入式标题

Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Connection:Keep-Alive

Content-Disposition:filename=encoded_2012-10-19_22.37.09_1359032866.flv

Content-Length:0

Content-Type:video/x-flv

Date:Thu, 24 Jan 2013 16:26:32 GMT

Expires:Thu, 19 Nov 1981 08:52:00 GMT

Keep-Alive:timeout=5, max=88

Pragma:no-cache

Server:Apache/2.2.20 (Ubuntu)

X-Powered-By:PHP/5.3.6-13ubuntu3.8

从直接链接到文件(工作的那个)的标题

Accept-Ranges:bytes

Connection:Keep-Alive

Content-Length:2428614

Content-Type:video/x-flv

Date:Thu, 24 Jan 2013 16:23:54 GMT

ETag:"26ca3d8-250ec6-4d4087c796500"

Keep-Alive:timeout=5, max=100

Last-Modified:Thu, 24 Jan 2013 13:07:00 GMT

Server:Apache/2.2.20 (Ubuntu)

管理通过media.php将其更改为此(但仍无法正常工作)

header("Content-Type: $ctype");

header('Content-Length: ' . filesize($filePath));

header('Accept-Ranges: bytes');

$now = time( );

$then = gmstrftime("%a, %d %b %Y %H:%M:%S GMT", $now + 365*86440);

header("Expires: $then");

ob_clean();

flush();

readfile($filePath);

Accept-Ranges:bytes

Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Connection:Keep-Alive

Content-Length:2428614

Content-Type:video/x-flv

Date:Thu, 24 Jan 2013 16:44:18 GMT

Expires:Fri, 24 Jan 2014 20:47:38 GMT

Keep-Alive:timeout=5, max=79

Pragma:no-cache

Server:Apache/2.2.20 (Ubuntu)

X-Powered-By:PHP/5.3.6-13ubuntu3.8

解决方法:

问题出在这里:

flashvars="file=media.php?file=nameoffile.flv&user=userid&folder=videos"

flashvars接收查询字符串,因此将其解释为

file : media.php?file=nameoffile.flv

user : userid

folder : videos

你需要urlencode文件参数:

flashvars="file=media.php?file=nameoffile.flv&user=userid&folder=videos"

标签:php,object,http-headers,embed,video

来源: https://codeday.me/bug/20190703/1371869.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值