我做了一個小PHP腳本,它應該允許訪問者從我的服務器上下載文件。它的工作方式是使用其中一個文件,獲取基本名稱並將頭文件和文件發送到客戶端。PHP腳本返回index.php而不是文件名
但是,下載文件時,我有時會得到index.php,有時會得到proper_file_name.zip。
我不知道爲什麼它有時會起作用,爲什麼它有時不起作用。任何建議將不勝感激。
這是我的源代碼的相關部分:
// Client requested custom byte range
if(isset($_SERVER['HTTP_RANGE']))
{
$range = explode('-', substr($_SERVER['HTTP_RANGE'], 6));
$seekStart = intval($range[0]);
if ($range[1] > 0)
$seekEnd = intval($range[1]);
header('HTTP/1.1 206 Partial Content');
header(sprintf('Content-Range: bytes %d-%d/%d', $seekStart, $seekEnd, $size_vfile));
}
else // Set headers for full file
header('HTTP/1.1 200 OK');
// Get basename of filename
$filename = basename($filename);
// Send headers to client
header('Cache-Control: private');
header('Content-Type: application/octet-stream');
header("Content-Disposition: attachment; filename=\"$filename\"");
header('Content-Transfer-Encoding: binary');
header('Content-Description: File Transfer');
header('Content-Length: '.$file_size);
header('Accept-Ranges: bytes');
我與智者同樣的問題:你可以在jfiddler的請求完成後向我們顯示你返回的頭文件嗎? – Killrawr
你有一個在'$ filename = basename($ filename)中使用的單元變量;' - 請向我們展示pre在這個問題得到解決的情況下解碼代碼。如果'$ filename'是空的,最終會出現這種行爲! –