各位好我想要server上的php能夠上傳本地的文件給client
以下是我查到的代碼。
server.php
$file = 'D:\1.txt';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
上面使用者瀏覽 server.php 可以下載 server 端的 1.txt 。
不過我實測下載大檔案,就會斷掉或是太久就失敗。
請問還有什麼好辦法,希望能不要用另外引用其他外部的庫
例如: 不要安裝curl 的庫
我在這篇文章:看到 socket 和 http 都有人使用
https://stackoverflow.com/questions/6914912/streaming-a-large-file-using-php
我在這篇看到 http 設定一些表頭也可以完成。
https://tw511.com/a/01/5797.html
我知道 http 是基於 tcp 的, 所以是不是直接用 socket 會更快。
但是我預想到socket 可能要開一些線程,好像也不是很方便
問題1
上方的程式碼我不確定這個下載的線程,是不是直接都給browser 去處理了。
如果是的話,那我可能大概率會選這種。
但這個方法還是有個缺點,因為他會直接下載檔案而不會顯示畫面
而假如我的server.php 想要
echo "<h1>hello</h1>";
就會沒有畫面。
所以到這,我又覺得好像也不是很好。
請問各為有誰知道這兩種的優缺點,或是有其他更推薦的方式。