Maison php教程 php手册 图解PHP文件下载原理实例

图解PHP文件下载原理实例

May 26, 2016 am 08:20 AM
fopen iconv 文件下载

有时为了安全及用户权限,我们不会直接把文件存在web路径用http给客户端下载,现在我们来讲讲如何php实现文件下载的原理及实例。

1、php下载原理图

图解PHP文件下载原理实例

 

2、文件下载源码:

<?php
$file_name = "哈哈.jpg"; //需要下载的文件
$file_name = iconv("utf-8", "gb2312", "$file_name");
$fp = fopen($file_name, "r+"); //下载文件必须先要将文件打开,写入内存
if (!file_exists($file_name)) { //判断文件是否存在
    echo "文件不存在";
    exit();
}
$file_size = filesize("a.jpg"); //判断文件大小
//返回的文件
Header("Content-type: application/octet-stream");
//按照字节格式返回
Header("Accept-Ranges: bytes");
//返回文件大小
Header("Accept-Length: " . $file_size);
//弹出客户端对话框,对应的文件名
Header("Content-Disposition: attachment; filename=" . $file_name);
//防止服务器瞬时压力增大,分段读取
$buffer = 1024;
while (!feof($fp)) {
    $file_data = fread($fp, $buffer);
    echo $file_data;
}
//关闭文件
fclose($fp);
?>
Copier après la connexion

3、文件编码问题解决方法:

如果文件名是中文,php的函数不能识别中文文件名,一般如果程序编码为utf-8,php的函数比较古老,只能识别gb2312编码的中文,所以把中文用iconv(“原编码”,”要转成的编码”,”要转码的字符串”)函数可以转码。

比如,把一个字符串从utf-8转码为gb2312

$file_name=iconv(“utf-8”,”gb2312”,”$file_name”);

PHP下载远程文件原理

<?php
/**
 * PHP下载远程文件到本地原理:通过PHP函数,先读取远程文件,然后在本地创建一个新的空文件,
 * 然后将已读取的远程文件的内容写入到新创建的文件当中,这样就可以达到远程文件下载功能
 * @author JackyLi
 *
 */
class DownloadFile {
    /**
     * @param string $file  远程需要下载的文件
     */
    public static function get_img_file($file) {
        $targetDir = sys_get_temp_dir() . DIRECTORY_SEPARATOR . "plupload" . DIRECTORY_SEPARATOR;
        if (!file_exists($targetDir)) { //检测临时下载目录是否存在,不存在,则新建一个
            @mkdir($targetDir);
        }
        if (!$file) {
            return false;
        }
        $ext = strrchr($file, "."); //取扩展名
        $filename = $targetDir . &#39;/&#39; . basename($file, $ext) . date("YmdHis") . $ext; //需要保存的文件名称(带完整路径)
        ob_start(); //开启output buffering
        readfile($file); //将文件读取buffering中
        $img = ob_get_contents(); //将buffering中的数据保存到变量当中,方便后续操作
        ob_end_clean(); //关闭output buffering
        $fp2 = @fopen($filename, "a"); //打开目标文件(马上被写入数据的文件)
        fwrite($fp2, $img); //写入数据到文件当中
        fclose($fp2); //关闭文件句柄
        //上面读取文件内容,可以直接用下面两行代替
        //    $file = file_get_contents($file);
        //    file_put_contents($filename,$file);
        return true;
    }
}
$download = new DownloadFile();
$download->get_img_file(&#39;http://news.sina.com.cn/c/2011-09-16/021323162600.shtml&#39;);
Copier après la connexion


文章地址:

转载随意^^请带上本文地址!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Opération d'ouverture Python après avoir téléchargé le fichier Opération d'ouverture Python après avoir téléchargé le fichier Apr 03, 2024 pm 03:39 PM

Python fournit les options suivantes pour ouvrir les fichiers téléchargés : Fonction open() : ouvre le fichier en utilisant le chemin et le mode spécifiés (tels que « r », « w », « a »). Bibliothèque de requêtes : utilisez sa méthode download() pour attribuer automatiquement un nom et ouvrir directement le fichier. Bibliothèque Pathlib : utilisez les méthodes write_bytes() et read_text() pour écrire et lire le contenu du fichier.

Comment utiliser Laravel pour implémenter les fonctions de téléchargement et de téléchargement de fichiers Comment utiliser Laravel pour implémenter les fonctions de téléchargement et de téléchargement de fichiers Nov 02, 2023 pm 04:36 PM

Comment utiliser Laravel pour implémenter les fonctions de téléchargement et de téléchargement de fichiers Laravel est un framework Web PHP populaire qui fournit une multitude de fonctions et d'outils pour rendre le développement d'applications Web plus facile et plus efficace. L'une des fonctions couramment utilisées est le téléchargement et le téléchargement de fichiers. Cet article expliquera comment utiliser Laravel pour implémenter les fonctions de téléchargement et de téléchargement de fichiers, et fournira des exemples de code spécifiques. Téléchargement de fichiers Le téléchargement de fichiers fait référence au téléchargement de fichiers locaux sur le serveur pour le stockage. Dans Laravel, nous pouvons utiliser le téléchargement de fichiers

Comment utiliser les fonctions PHP pour télécharger et télécharger des pièces jointes pour envoyer et recevoir des e-mails ? Comment utiliser les fonctions PHP pour télécharger et télécharger des pièces jointes pour envoyer et recevoir des e-mails ? Jul 25, 2023 pm 08:17 PM

Comment utiliser les fonctions PHP pour télécharger et télécharger des pièces jointes pour envoyer et recevoir des e-mails ? Avec le développement rapide des technologies de communication modernes, le courrier électronique est devenu un moyen important pour communiquer et transmettre des informations dans la vie quotidienne. Dans le développement Web, nous rencontrons souvent le besoin d’envoyer et de recevoir des e-mails avec des pièces jointes. En tant que puissant langage de script côté serveur, PHP fournit une multitude de fonctions et de bibliothèques de classes qui peuvent simplifier le processus de traitement des e-mails. Cet article explique comment utiliser les fonctions PHP pour télécharger et télécharger des pièces jointes pour l'envoi et la réception d'e-mails. L'e-mail est envoyé en premier, nous

Implémenter le téléchargement et le téléchargement de fichiers dans les documents Workerman Implémenter le téléchargement et le téléchargement de fichiers dans les documents Workerman Nov 08, 2023 pm 06:02 PM

Pour implémenter le téléchargement et le téléchargement de fichiers dans des documents Workerman, des exemples de code spécifiques sont requis Introduction : Workerman est un framework de communication réseau asynchrone PHP hautes performances, simple, efficace et facile à utiliser. Dans le développement réel, le téléchargement et le téléchargement de fichiers sont des exigences fonctionnelles courantes. Cet article explique comment utiliser le framework Workerman pour implémenter le téléchargement et le téléchargement de fichiers, et donne des exemples de code spécifiques. 1. Téléchargement de fichiers : le téléchargement de fichiers fait référence à l'opération de transfert de fichiers de l'ordinateur local vers le serveur. Ce qui suit est utilisé

Comment résoudre PHP Avertissement : fopen() : échec d'ouverture du flux : aucun fichier ou répertoire de ce type Comment résoudre PHP Avertissement : fopen() : échec d'ouverture du flux : aucun fichier ou répertoire de ce type Aug 19, 2023 am 10:44 AM

Comment résoudre PHPWarning:fopen():failedtoopenstream:Nosuchfileordirectory Dans le processus d'utilisation du développement PHP, nous rencontrons souvent des problèmes de fonctionnement des fichiers, dont "PHPWarning:fopen():failedtoopenstream:Nosuchfileordirectory"

Comment résoudre PHP Avertissement : fopen() : l'opération SSL a échoué dans file.php à la ligne X Comment résoudre PHP Avertissement : fopen() : l'opération SSL a échoué dans file.php à la ligne X Aug 25, 2023 am 09:22 AM

Comment résoudre PHPWarning:fopen():SSLoperationfailedinfile.phponlineX Dans la programmation PHP, nous utilisons souvent la fonction fopen pour ouvrir des fichiers ou des URL et effectuer des opérations associées. Cependant, lorsque vous utilisez la fonction fopen, vous rencontrerez parfois quelque chose de similaire à Warning:fopen():SSLoperationfailedinfile.p

Comment utiliser le framework Hyperf pour le téléchargement de fichiers Comment utiliser le framework Hyperf pour le téléchargement de fichiers Oct 21, 2023 am 08:23 AM

Comment utiliser le framework Hyperf pour le téléchargement de fichiers Introduction : Le téléchargement de fichiers est une exigence courante lors du développement d'applications Web à l'aide du framework Hyperf. Cet article explique comment utiliser le framework Hyperf pour le téléchargement de fichiers, y compris des exemples de code spécifiques. 1. Préparation Avant de commencer, assurez-vous d'avoir installé le framework Hyperf et créé avec succès une application Hyperf. 2. Créer un contrôleur de téléchargement de fichiers Tout d'abord, nous devons créer un contrôleur pour gérer les demandes de téléchargement de fichiers. Ouvrez le terminal et entrez

Comment résoudre l'avertissement PHP : fopen() : échec d'ouverture du flux : autorisation refusée Comment résoudre l'avertissement PHP : fopen() : échec d'ouverture du flux : autorisation refusée Aug 20, 2023 pm 01:45 PM

Comment résoudre PHPWarning:fopen():failedtoopenstream:Permissiondenied Dans le processus de développement de programmes PHP, nous rencontrons souvent des messages d'erreur, tels que PHPWarning:fopen():failedtoopenstream:Permissiondenied. Cette erreur est généralement due à des autorisations de fichier ou de répertoire incorrectes

See all articles