Introduction détaillée à l'implémentation de trois téléchargements de fichiers en PHP

慕斯
Libérer: 2023-04-10 08:56:02
avant
2891 Les gens l'ont consulté

Cet article vous donnera une introduction détaillée à la mise en œuvre de trois types de téléchargements de fichiers en PHP, qui ont une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère que cela aidera tout le monde.

Introduction détaillée à l'implémentation de trois téléchargements de fichiers en PHP

1. Ajoutez directement le lien du fichier

<button>
    <a href = "http://localhost/down.zip">
    下载文件</button>
Copier après la connexion

Cliquez sur le bouton à télécharger :
Introduction détaillée à limplémentation de trois téléchargements de fichiers en PHP

2. Paramètres de passage pour trouver et accéder au lien de téléchargement

Paramètres de passage :

<button>
    <a href = "http://localhost?f=&#39;down&#39;">
    下载文件
</button>
Copier après la connexion

Retrouvez le fichier et défiez le lien de téléchargement :

<?php

$down = $_GET[&#39;f&#39;];   //获取文件参数
$filename = $down.&#39;.zip&#39;; //获取文件名称
$dir ="down/";  //相对于网站根目录的下载目录路径
$down_host = $_SERVER[&#39;HTTP_HOST&#39;].&#39;/&#39;; //当前域名


//判断如果文件存在,则跳转到下载路径
if(file_exists(__DIR__.&#39;/&#39;.$dir.$filename)){
    header(&#39;location:http://&#39;.$down_host.$dir.$filename);
}else{
    header(&#39;HTTP/1.1 404 Not Found&#39;);
}
Copier après la connexion

Résultat :

  • Le fichier existe

Introduction détaillée à limplémentation de trois téléchargements de fichiers en PHP

  • Le fichier n'existe pas
    Introduction détaillée à limplémentation de trois téléchargements de fichiers en PHP

3. Les fonctions head() et fread() génèrent le fichier directement dans le navigateur

<?php  
$file_name = "down";$file_name = "down.zip";     //下载文件名    $file_dir = "./down/";        //下载文件存放目录    //检查文件是否存在    if (! file_exists ( $file_dir . $file_name )) {    
    header(&#39;HTTP/1.1 404 NOT FOUND&#39;);  
} else {    
    //以只读和二进制模式打开文件   
    $file = fopen ( $file_dir . $file_name, "rb" ); 

    //告诉浏览器这是一个文件流格式的文件    
    Header ( "Content-type: application/octet-stream" ); 
    //请求范围的度量单位  
    Header ( "Accept-Ranges: bytes" );  
    //Content-Length是指定包含于请求或响应中数据的字节长度    
    Header ( "Accept-Length: " . filesize ( $file_dir . $file_name ) );  
    //用来告诉浏览器,文件是可以当做附件被下载,下载后的文件名称为$file_name该变量的值。
    Header ( "Content-Disposition: attachment; filename=" . $file_name );    

    //读取文件内容并直接输出到浏览器    
    echo fread ( $file, filesize ( $file_dir . $file_name ) );    
    fclose ( $file );    
    exit ();    
}
Copier après la connexion

Résultat : identique à la seconde

Résumé : Les première et deuxième opérations sont relativement simples, mais elles permettent facilement d'exposer la véritable adresse du fichier et ne sont pas très sécurisées. La troisième opération permet de mieux masquer la véritable adresse du fichier <.>

Apprentissage recommandé :

Tutoriel vidéo php

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!

Étiquettes associées:
php
source:csdn.net
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal