php下载文件源代码(强制任意文件格式下载)_PHP教程
一个简单的php文件下载源代码,虽不支持断点续传等,但是可以满足一些常用的需求了。php下载文件其实用一个a标签就能实现,比如 magento-1.8.1.0.zip 。但是遇到一些浏览器能识别的格式,比如.txt,.html,.pdf等,再用abc.txt 想必也知道会发生什么了。
/**
* 文件下载
*
**/
header("Content-type:text/html;charset=utf-8");
download('web/magento-1.8.1.0.zip', 'magento下载');
function download($file, $down_name){
$suffix = substr($file,strrpos($file,'.')); //获取文件后缀
$down_name = $down_name.$suffix; //新文件名,就是下载后的名字
//判断给定的文件存在与否
if(!file_exists($file)){
die("您要下载的文件已不存在,可能是被删除");
}
$fp = fopen($file,"r");
$file_size = filesize($file);
//下载文件需要用到的头
header("Content-type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Accept-Length:".$file_size);
header("Content-Disposition: attachment; filename=".$down_name);
$buffer = 1024;
$file_count = 0;
//向浏览器返回数据
while(!feof($fp) && $file_count $file_con = fread($fp,$buffer);
$file_count += $buffer;
echo $file_con;
}
fclose($fp);
}
?>
PHP强制性文件下载的源代码
为用户提供强制性的文件下载功能。
/********************
*@file - path to file
*/
function force_download($file)
{
if ((isset($file))&&(file_exists($file))) {
header("Content-length: ".filesize($file));
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $file . '"');
readfile("$file");
} else {
echo "No file selected";
}
}
你一定会笑我"下载文件"如此简单都值得说?当然并不是想象那么简单。例如你希望客户要填完一份表格,才可以下载某一文件,你第一个想法一定是用 "Redirect"的方法,先检查表格是否已经填写完毕和完整,然后就将网址指到该文件,这样客户才能下载,但如果你想做一个关于"网上购物"的电子商务网站,考虑安全问题,你不想用户直接复制网址下载该文件,笔者建议你使用PHP直接读取该实际文件然后下载的方法去做。程序如下:
$file_name = "info_check.exe";
$file_dir = "/public/www/download/";
if (!file_exists($file_dir . $file_name)) { //检查文件是否存在
echo "文件找不到";
exit;
} else {
$file = fopen($file_dir . $file_name,"r"); // 打开文件
// 输入文件标签
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_dir . $file_name));
Header("Content-Disposition: attachment; filename=" . $file_name);
// 输出文件内容
echo fread($file,filesize($file_dir . $file_name));
fclose($file);
exit;
}
而如果文件路径是"http" 或者 "ftp" 网址的话,则源代码会有少许改变,程序如下:
$file_name = "info_check.exe";
$file_dir = "http://www.jb51.net/";
$file = @ fopen($file_dir . $file_name,"r");
if (!$file) {
echo "文件找不到";
} else {
Header("Content-type: application/octet-stream");
Header("Content-Disposition: attachment; filename=" . $file_name);
while (!feof ($file)) {
echo fread($file,50000);
}
fclose ($file);
}
这样就可以用PHP直接输出文件了。
但,一定要注意:Header信息相当于先将文件信息高速浏览器,然后,再把浏览器上的信息下载到附件中。所以,如果在MVC模式的应用程序中,view页一定不要有任何内容,否则,view页的相关内容会随着文件的内容一同被下载,导致下载后的文件不能使用。
下面是我的程序:
public function downloadAction()
{
if (isset($_GET['mriID']))
{
$this->view->mriID=(get_magic_quotes_gpc())?$_GET['mriID']:addslashes($_GET['mriID']);
}
if (isset($_GET['dicomID']))
{
$this->view->dicomID=(get_magic_quotes_gpc())?$_GET['dicomID']:addslashes($_GET['dicomID']);
}
if (isset($_GET['JPGID']))
{
$this->view->JPGID=(get_magic_quotes_gpc())?$_GET['JPGID']:addslashes($_GET['JPGID']);
}
$dicomfile=new dicomfile();
$jpgfile=new jpgfile();
$mri=new mri();
if($this->view->dicomID)
{
$filename=$dicomfile->find($this->view->dicomID)->toArray();
$filename=$filename[0]['filename'];
}
else if($this->view->JPGID)
{
$filename=$jpgfile->find($this->view->JPGID)->toArray();
$filename=$filename[0]['JPGname'];
}
$dir=$mri->find($this->view->mriID)->toArray();
$dir=$dir[0]['dicom_path'];
$file=$dir.'/'.$filename;
if (!file_exists($file))
{
echo "the file does not exist!";
exit();
}
$file_size=filesize($file);
header("Content-type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Accept-Length:". $file_size);
header("Content-Disposition: attachment; filename=".$filename);
$fp=fopen($file,"r");
if (!$fp)
echo "can't open file!";
$buffer_size=1024;
$cur_pos=0;
while (!feof($fp)&&$file_size-$cur_pos>$buffer_size)
{
$buffer=fread($fp,$buffer_size);
echo $buffer;
$cur_pos+=$buffer_size;
}
$buffer=fread($fp,$file_size-$cur_pos);
echo $buffer;
fclose($fp);
}
此时,download.phtml页面一定要是完全空白的。千万不要有任何内容(包括如下的固定信息:

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds

Les longues URL, souvent encombrées de mots clés et de paramètres de suivi, peuvent dissuader les visiteurs. Un script de raccourcissement d'URL offre une solution, créant des liens concis idéaux pour les médias sociaux et d'autres plateformes. Ces scripts sont utiles pour les sites Web individuels

À la suite de son acquisition de haut niveau par Facebook en 2012, Instagram a adopté deux ensembles d'API pour une utilisation tierce. Ce sont l'API graphique Instagram et l'API d'affichage de base Instagram. En tant que développeur créant une application qui nécessite des informations à partir d'un

Laravel simplifie la gestion des données de session temporaires à l'aide de ses méthodes de flash intuitives. Ceci est parfait pour afficher de brefs messages, alertes ou notifications dans votre application. Les données ne persistent que pour la demande ultérieure par défaut: $ demande-

Il s'agit de la deuxième et dernière partie de la série sur la construction d'une application React avec un back-end Laravel. Dans la première partie de la série, nous avons créé une API RESTful utilisant Laravel pour une application de liste de base sur le produit. Dans ce tutoriel, nous serons Dev

Laravel fournit une syntaxe de simulation de réponse HTTP concise, simplifiant les tests d'interaction HTTP. Cette approche réduit considérablement la redondance du code tout en rendant votre simulation de test plus intuitive. L'implémentation de base fournit une variété de raccourcis de type de réponse: Utiliser illuminate \ support \ faades \ http; Http :: faux ([[ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

L'extension PHP Client URL (CURL) est un outil puissant pour les développeurs, permettant une interaction transparente avec des serveurs distants et des API REST. En tirant parti de Libcurl, une bibliothèque de transfert de fichiers multi-protocol très respectée, PHP Curl facilite Efficient Execu

Voulez-vous fournir des solutions instantanées en temps réel aux problèmes les plus pressants de vos clients? Le chat en direct vous permet d'avoir des conversations en temps réel avec les clients et de résoudre leurs problèmes instantanément. Il vous permet de fournir un service plus rapide à votre personnalité

L'enquête sur le paysage PHP 2025 étudie les tendances actuelles de développement du PHP. Il explore l'utilisation du cadre, les méthodes de déploiement et les défis, visant à fournir des informations aux développeurs et aux entreprises. L'enquête prévoit la croissance de la PHP moderne versio
