0
我正在寫一個php頁面,從服務器下載文件到用戶。這裏是我的代碼:無法下載多個文件
clearstatcache();
//Output stream to client
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: application/zip");
header("Content-Disposition: attachment; filename=\"" . $zipName . "\"; filename*=utf-8''" . rawurlencode($zipName) . ";");
header("Content-Transfer-Encoding: binary");
header("Accept-Ranges: bytes");
header("Content-Length: " . (filesize($downloadFile)));
$fp = fopen($downloadFile, "rb");
ob_clean();
while (!feof($fp) && (connection_status() == 0) && !connection_aborted()) {
print(fread($fp, 1024 * 1024));
flush();
ob_flush();
}
fclose($fp);
我面臨的問題是:當用戶點擊下載按鈕,服務器發送文件給用戶。當用戶下載文件時,用戶再次點擊下載按鈕,請求現在不執行(所有其他請求不能執行)。當用戶完全下載第一個文件時,第二個文件就是開始。
你在使用會話嗎? –
順便說一句,除非你知道如何處理範圍請求,否則不要發送'Accept-Ranges:bytes'。我也不確定你爲什麼每次都使用'ob_flush()';我只會在循環之前使用'ob_end_clean()'。 –
@Jack:非常感謝。我現在不使用會話。 –