Téléchargement de fichiers depuis des serveurs FTP vers des navigateurs sans stockage local
Lors du téléchargement de fichiers depuis des serveurs FTP à l'aide de scripts PHP, il est courant de stocker les fichiers temporairement sur le serveur web avant de les envoyer au navigateur de l'utilisateur. Cependant, cette approche peut s'avérer inefficace.
Obtenir le contenu du fichier sans le stocker
Pour envoyer directement un fichier au navigateur sans l'enregistrer sur le disque, supprimez simplement la mise en mémoire tampon de sortie fonctions (ob_start() et ob_get_contents()). Ce code enverra le fichier directement au flux de sortie :
<code class="php">ftp_get($conn_id, "php://output", $file, FTP_BINARY);</code>
Ajout d'un en-tête Content-Length
Pour inclure l'en-tête Content-Length, interrogez la taille du fichier en utilisant ftp_size() avant de télécharger :
<code class="php">$file_path = "remote/path/file.zip"; $size = ftp_size($conn_id, $file_path);</code>
Ensuite, définissez les en-têtes appropriés et téléchargez le fichier :
<code class="php">header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=" . basename($file_path)); header("Content-Length: $size"); ftp_get($conn_id, "php://output", $file_path, FTP_BINARY);</code>
Considérations supplémentaires
N'oubliez pas de gérer les erreurs et de fournir des informations appropriées sur le fichier dans les en-têtes de réponse, y compris le nom du fichier à télécharger. Pour un guide complet, reportez-vous aux ressources liées. En utilisant ces techniques, vous pouvez télécharger efficacement des fichiers depuis des serveurs FTP directement vers les navigateurs, sans avoir besoin de stockage temporaire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!