PHP 文件下载

PHP 文件下载

PHP 魔术常量PHP 文件上传

PHP 文件下载

在本教程中,您将学习如何使用PHP强制下载文件。

用PHP下载文件通常,您不一定需要使用任何服务器端脚本语言(例如PHP)来下载图像,zip文件,pdf文档,exe文件等。如果此类文件存储在公共可访问的文件夹中,则只需创建一个指向该文件的超链接,每当用户单击链接时,浏览器都会自动下载该文件。

示例下载Zip文件

下载PDF文件

下载图像文件

下载EXE文件单击指向PDF或图像文件的链接不会导致其直接下载到硬盘驱动器。它将仅在浏览器中打开文件。此外,您可以将其保存到硬盘中。但是,默认情况下,zip和exe文件会自动下载到硬盘驱动器。

使用PHP强制下载您可以使用PHP readfile()函数强制将图像或其他类型的文件直接下载到用户的硬盘上。在这里,我们将创建一个简单的图像库,允许用户单击鼠标从浏览器下载图像文件。

让我们创建一个名为“ image-gallery.php”的文件,并将以下代码放入其中。

示例

Simple Image Gallery

//包含示例图像文件名的数组

$images = array("kites.jpg", "balloons.jpg");

//遍历数组以创建图片库

foreach($images as $image){

echo '

';

echo '' . pathinfo($image, PATHINFO_FILENAME) .'';

echo '

下载

';

echo '

';

}

?>

如果仔细查看上面的示例代码,则会发现指向“ download.php”文件的下载链接点,该URL还包含图像文件名作为查询字符串。另外,我们使用PHP urlencode()函数对图像文件名进行编码,以便可以安全地将其作为URL参数传递,因为文件名可能包含URL不安全字符。

这是“ download.php”文件的完整代码,可强制下载图像。

if(isset($_REQUEST["file"])){

//获取参数

$file = urldecode($_REQUEST["file"]); //解码URL编码的字符串

/* 测试文件名是否包含非法字符

例如使用正则表达式的“ ../” */

if(preg_match('/^[^.][-a-z0-9_.]+[a-z]$/i', $file)){

$filepath = "images/" . $file;

// 流程下载

if(file_exists($filepath)) {

header('Content-Description: File Transfer');

header('Content-Type: application/octet-stream');

header('Content-Disposition: attachment; filename="'.basename($filepath).'"');

header('Expires: 0');

header('Cache-Control: must-revalidate');

header('Pragma: public');

header('Content-Length: ' . filesize($filepath));

flush(); //冲洗系统输出缓冲区

readfile($filepath);

die();

} else {

http_response_code(404);

die();

}

} else {

die("Invalid file name!");

}

}

?>同样,您可以强制下载其他文件格式,例如.doc,pdf文件等。

上面示例(第8行)中的正则表达式将完全不允许名称以点字符(.)开头或结尾的文件,例如,例如,它允许使用kites.jpg或Kites.jpg,myscript.min.js等文件名,但不允许kites.jpg.或.kites.jpg。

请查看有关正则表达式的教程,以详细了解正则表达式。

PHP 魔术常量PHP 文件上传

相关推荐

汉字“叶”的行书、楷书、草书、隶书、篆书等书法字体字帖
365bet体育在线投注注册备

汉字“叶”的行书、楷书、草书、隶书、篆书等书法字体字帖

📅 07-20 👁️ 1441
175家中国先进封装测试厂名录(含营收排行) 在当前的半导体技术领域中,先进封装技术的重要性日益凸显,它对于提升半导体产品的性能、可靠性和降低成本起到了关键作用。因此...
全面解析欧朋科学上网的使用与设置
365bet体育在线投注注册备

全面解析欧朋科学上网的使用与设置

📅 07-27 👁️ 3923