文件不存在的问题

文件不存在的问题

代码在当前目录下,获取远程文件地址应该可以直接get到啊,为什么不存在呢

// download.php?file=5f05cc5495ed2.jpeg

// 接收get参数
if (!isset($_GET['file'])){
   exit('需要传递文件名称');
}

if (empty($_GET['file'])){
   exit('请传递文件名称');
}

// 获取远程文件地址
//$file = './uploads/'.$_GET['file'];
$file = $_GET['file'];
var_dump($file);

if (!file_exists($file)){
   exit('文件不存在..');
}

if (!is_file($file)){
   exit('文件不存在(如果不是文件)');
}

if (!is_readable($file)){
   exit('文件不可读');
}

// 清空缓存区
ob_clean();

// 打开文件 rb二进制形式
$file_handle = fopen($file,'rb');

if (!$file_handle){
   exit('打开文件失败');
}

// header头部设置  通知浏览器
// 二进制流
header('Content-type: application/octet-stream; charset=utf-8');
// 二进制传输
header('Content-Transfer-Encoding: binary');
// 文件大小
header('Content-Length:'.filesize($file));
// 文件以附件的形式打开
header('Content-Disposition: attachment; filename"'.urlencode(basename($file)).'"');

// 读取并输出文件
while (!feof($file_handle)){
   // 每次读取10240个字节
   echo fread($file_handle,10240);
}

// 关闭文档流
fclose($file_handle);

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,1. 同学可以输出$_GET['file']。查看文件是否在当前目录中。如果不存在,则可能是同学设置的文件路径存在问题,建议同学根据文件路径重新进行传递。

2. 或同学尝试在源码中进行测试。

3. 同学也可以以复制粘贴的方式反馈HTML中的代码,与以截图的方式反馈项目结构。便于老师定位问题。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • weixin_慕沐1378591 提问者 #1
    我天,是我看错目录了,现在换到当前目录下下载成功~
    2020-07-11 16:29:44
好帮手慕小尤 2020-07-11 11:46:41

同学你好,测试代码并为发现文件不存在的问题,建议同学查看5f05cc5495ed2.jpeg是否存在。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师