PHP实现文件上传与下载的示例代码

2024-03-01 0 612
目录
  • 1、环境配置
  • 2、超全局数组
  • 3、错误说明
  • 4、上传安全
  • 5、处理类
  • 6、文件下载

PHP文件上传下载

1、环境配置

修改 PHP.ini 配置文件可以定制上传机制,通过 phpinfo() 函数可以查看到 PHP.ini 文件所在位置。

配置说明file_uploads是否允许上传文件,On 开启 Off 禁止上传upload_tmp_dir文件上传过程中临时保存的目录,默认保存位置为 /tmpupload_max_filesize允许上传的最大文件大小,可以使用 K、M、G 单位如 2Mpost_max_sizePHP 将接受的最大 POST 数据大小,包括上传文件、表单数据。所以 post_max_size 要大于 upload_max_filesizemax_file_uploads单个请求时,允许上传的最大文件数量

2、超全局数组

上传的文件保存在 $_FILES 超全局数组中,具体参数说明如下:

选项说明tmp_name临时文件名name上传文件原文件名type文件 MIME 类型error错误编号size文件大小,单位字节

//index.html
<form action=\”./server.php\” enctype=\”multipart/form-data\” method=\”post\”>
<label>
<input type=\”file\” name=\”files\” value=\”\” >
</label>
<button type=\”submit\”>提交</button>
</form>

//server.php
print_r($_FILES);

/*

Array
(
[files] => Array
(
[name] => Key.txt
[full_path] => Key.txt
[type] => text/plain
[tmp_name] => C:\\wamp64\\tmp\\php665C.tmp
[error] => 0
[size] => 54
)

)

*/

3、错误说明

上传出错会在$_FILES[‘error’] 选项中体现,具体错误说明如下:

UPLOAD_ERR_OK (0): 没有错误,文件上传成功。

UPLOAD_ERR_INI_SIZE (1): 上传的文件大小超过了php.ini中upload_max_filesize指令所设置的大小限制。

UPLOAD_ERR_FORM_SIZE (2): 上传的文件大小超过了HTML表单中MAX_FILE_SIZE指令所设置的大小限制。

UPLOAD_ERR_PARTIAL (3): 文件只有部分被上传。

UPLOAD_ERR_NO_FILE (4): 没有文件被上传。

UPLOAD_ERR_NO_TMP_DIR (6): 找不到临时文件夹。

UPLOAD_ERR_CANT_WRITE (7): 文件写入失败。

UPLOAD_ERR_EXTENSION (8): 由于PHP扩展的限制,文件上传被停止。

4、上传安全

检测文件是否是合法的上传文件,以保证安全。

<?php
if ($_SERVER[\’REQUEST_METHOD\’] === \’POST\’) {
// 检查文件是否成功上传
if (isset($_FILES[\’file_name\’]) && $_FILES[\’file_name\’][\’error\’] === UPLOAD_ERR_OK) {
// 文件上传成功
$tempFilePath = $_FILES[\’file_name\’][\’tmp_name\’];
$fileName = $_FILES[\’file_name\’][\’name\’];

// 执行进一步的处理操作
// …

echo \”文件上传成功!\”;
} else {
// 文件上传失败或未选择文件
echo \”文件上传失败!\”;
}
}
?>

5、处理类

下面是支持单文件、多文件上传的处理类。

index.html

<form action=\”./server.php\” method=\”post\” enctype=\”multipart/form-data\”>
<input type=\”file\” name=\”image\”>
<input type=\”file\” name=\”image[]\”>
<input type=\”file\” name=\”image[]\”>
<button class=\”btn\”>提交</button>
</form>

server.php

if ($_SERVER[\’REQUEST_METHOD\’] === \’POST\’) {
// 检查是否有文件上传
if (isset($_FILES[\’images\’])) {
$fileCount = count($_FILES[\’images\’][\’name\’]);

// 遍历每个上传的文件
for ($i = 0; $i < $fileCount; $i++) {
// 检查文件是否成功上传
if ($_FILES[\’images\’][\’error\’][$i] === UPLOAD_ERR_OK) {
$tempFilePath = $_FILES[\’images\’][\’tmp_name\’][$i];
$fileName = $_FILES[\’images\’][\’name\’][$i];

// 执行进一步的处理操作
// …

echo \”文件 $fileName 上传成功!<br>\”;
} else {
// 文件上传失败或未选择文件
echo \”文件上传失败!<br>\”;
}
}
} else {
// 没有文件被上传
echo \”没有文件被上传!<br>\”;
}
}

6、文件下载

$file = \”dog.jpg\”;
$fileName = basename($file);
header(\”Content-type: application/octet-stream\”);
header(\”Content-Disposition: attachment; filename={$fileName}\”);
header(\”Accept-ranges: bytes\”);
header(\”Content-Length: \” . filesize($file));
readfile($file);

到此这篇关于PHP实现文件上传与下载的示例代码的文章就介绍到这了,更多相关PHP文件上传与下载内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

您可能感兴趣的文章:

  • PHP实现文件上传和下载的示例代码
  • PHP实现文件上传与下载
  • PHP文件操作实例总结【文件上传、下载、分页】
  • php使用ftp实现文件上传与下载功能
  • PHP实现文件上传下载实例
  • php文件上传、下载和删除示例

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 PHP PHP实现文件上传与下载的示例代码 https://www.u-9.cn/biancheng/php/182013.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务