簡體   English   中英

無法通過php腳本訪問文件

[英]Can't reach file by php script

今天,我想創建一些PHP腳本,將直接強制下載mp3文件。

我要下載的文件位於聲音文件夾中,我可以通過http://playall.pl/sounds/ThemadpixprojectBadChick.mp3訪問該文件

但是,當涉及到php腳本時,函數file_exists表示此文件不在此服務器上。

我該如何解決?

用於下載文件的代碼

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file_name));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;

並獲取文件名和文件URL

$file_name = ''.$sound['Sounds']['artist'].' - '.$sound['Sounds']['title'].'.mp3';

$file_name = preg_replace('/\s+/', '_', $file_name);

$file = 'http://playall.pl'.$this->webroot.'sounds/'.$sound['Sounds']['src_url'];

對於file_exists($file) ,變量$file需要完整路徑。 並且必須是文件系統上的路徑,而不是網站位置的URL。

因此,您需要類似:

$file = $_SERVER['DOCUMENT_ROOT'] . '/app/webroot/sounds/';

$_SERVER['DOCUMENT_ROOT']為您提供htdocs文件夾的文件系統路徑,因此其余位置都必須是相對的。

好。 問題很簡單-我在路徑前面有一個/。 現在,它可以正常工作。 謝謝大家的幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM