当我如下传递变量时..
var file_path = "/admin/upload/rec1.20130522_003928.f4v";
...
ifrm.src = download.php?file_path=" + file_path;
它显示链接为
_admin_upload_rec1.20130522_003928.f4v
(捕获:http ://screencast.com/t/ooQHLdr5cixz )
我该如何解决这个问题?谢谢
据推测,在您发送文件的脚本中,您还发送了一个Content-Disposition
标头,告诉浏览器这是下载,而不是立即尝试显示的资源。我假设您也在$_GET['file_path']
该标题中作为文件名发送。
当您发送该标头时,请不要包含目录部分。浏览器会对目录部分做任何他们想做的事情,从剥离它到修改它。他们几乎唯一不会做的事情(出于安全原因)实际上是将其用作目录名称。
您可以使用类似的方式发送基本文件名
$path_parts = preg_split(':[/\\]+:', $_GET['file_path']);
$filename = addslashes(end($path_parts));
header("Content-Disposition: attachment; filename=\"$filename\"");
试试这个:var file_path = "\admin\upload\rec1.20130522_003928.f4v"; ... ifrm.src = download.php?file_path=" + file_path;
代替。