所以我想知道我可以從我的 FTP 服務器下載一個完整的檔案夾,只需點擊一個link. 當我必須.log從我的 FTP 服務器下載我的檔案時,我這樣做:
首先我創建一個鏈接:
function FTP_download($id, $folder = ""){
?> <a href="ftp_download.php?folder=<?php echo $folder; ?>&id=<?php echo $id;?>&file=<?php echo $id.'.log'; ?>" download> Download full log </a> <?php
}
然后我呼叫下載器檔案:
<?php
//Does GET exist
if (!isset($_GET['file'])) {
echo"ERROR - loading log";
return false;
}
//Define FTP variables
$ftp_server = "xxxx";
$ftp_user_name = "xxxx";
$ftp_user_pass = "xxxx";
$file = $_GET['file'];
$id = $_GET['id'];
$folder = $_GET['folder'];
// set up basic connection
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// Change dir to id folder
ftp_chdir($conn_id, $id);
// Change dir to logs
ftp_chdir($conn_id, $folder);
//Check if file exists
ftp_pasv($conn_id, true);
$list = ftp_nlist($conn_id, '');
if (!in_array($file, $list)) {
return false;
}
// get the size of $file
$size = ftp_size($conn_id, $file);
//Create headers for force download
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: ' . $size);
//Read file content
readfile('ftp://'.$ftp_user_name.':'.urlencode($ftp_user_pass).'@'.$ftp_server.'/'.$id.'/'.$folder.'/'.$file);
ftp_close($conn_id);
return true;
?>
通過單擊該鏈接,瀏覽器下載開始。

是否可以創建一個下載整個檔案夾的下載檔案,其中包含所有內容?
喜歡下載-> 'ftp://'.$ftp_user_name.':'.urlencode($ftp_user_pass).'@'.$ftp_server.'/'.$id.'/'.$folder
uj5u.com熱心網友回復:
我會做的是下載目錄中的所有檔案/tmp,然后將它們全部壓縮到一個存檔中。然后可以流式傳輸該檔案作為回應。
確保您的 tmp 目錄被清除,這通常在請求完成后由 php 自行完成,請參見此處。
PHP ZipArchive
如果您想在單個請求中下載所有檔案(而不是在檔案夾中)。
當使用“Content-Disposition”值作為檔案內容之間的分隔符時,這可能會起作用。我無法自信地向您解釋您需要什么。也許谷歌搜索'multipart form request' 會給你一個教程。
至于創建直接檔案夾作為回應,我從未見過這樣的功能,也不認為這是可能的。
在我看來,Zip 是這里的最佳選擇,因為它應該得到足夠廣泛的支持,并保持您的檔案夾完整無缺,我認為您想要保留。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/396413.html
