PHP如何上传文件?看完就明白了!
在之前的文章中给大家带来了《PHP中怎样获取和检测文件的属性?(总结分享)》,其中给大家详细的介绍了PHP中文件属性的相关知识,本篇文章我们一起来看一下,PHP中我们应该怎样来上传文件。希望对大家有帮助!
我们在日常生活中经常会遇到比如发个朋友圈上传一下图片、发邮件附带文件之类文件上传的步骤,那在我们PHP代码中,想要实现文件上传应该怎样操作?文件上传是PHP文件系统中十分重要的功能之一,那接下来我们一起来看一看应该怎样去实现这样的功能。
配置php.ini
想要使用文件上传的功能,首先我们需要配置php.ini,对其中的参数进行合理地设置。那我们先来看一下应该怎样去找到php.ini文件。示例如下:
首先我们输入:
<?php phpinfo(); ?>
输出结果:
由上述结果中,在Loaded Configuration File一栏中可以看到php.ini的具体路径。由此便找到了php.ini文件。
php.ini中的文件太多可以使用ctrl+F来搜索相关配置项。那我们需要配置的参数如下:
file_uploads
: on,说明服务器开启了文件上传功能;如果为 off,则说明服务器关闭了文件上传功能。upload_tmp_dir
:上传文件的临时目录。在文件被成功上传之前,文件首先会存放到服务器端的临时目录中,不设置的为系统默认的目录。upload_max_filesize
:服务器允许上传文件的最大值,以MB为单位。max_execution_time
:PHP 中一个指令所能执行的最大时间,单位是秒。memory_limit
:PHP 中一个指令所分配的内存空间,单位是 MB。
其中我们需要注意的是:配置完成后想要配置生效的话,需要重启Apache 服务器,配置的参数才生效。
预定义变量 $_FILES
在我们配置完php.ini之后,我们就需要通过预定义变量$_FILES 来对上传文件做一些限制和判断。$_FILES 变量存储的是上传文件的相关信息,其需要保存的信息如下:
$_FILES[filename][name]
:保存上传文件的文件名$_FILES[filename][size]
: 保存上传文件的大小$_FILES[filename][tmp_name]
: 保存上传文件的临时名称$_FILES[filename][type]
:保存上传文件的类型$_FILES[filename][error]
: 保存上传文件结果的代号,0 则表示成功
我们可以通过预定义变量 $_FILES结合HTML进行示例如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>PHP文件上传</title> </head> <body> <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="upfile"> <input type="submit" value="上传"> </form> </body> </html> <?php if(!empty($_FILES)){ foreach ($_FILES['upfile'] as $key => $value) { echo $key.'=>'.$value.'<br>'; } } ?>
运行程序后,根据表单选择要上传的文件,我以test1.txt为例,输出结果为:
根据保存的信息我们可以得出该文件的相关信息:
文件名为test1.txt;上传文件的类型为text/plain;保存上传文件的临时名称为C:\Windows\phpD16F.tmp;0 则表示上传文件成功;文件的大小为5。
单文件上传
通过上面的代码,我们已经得到了要上传文件的基本信息,接下来我们需要使用 move_uploaded_file()
函数来实现上传。它的主要功能就是把刚才上传的文件移动到一个新的位置。它的语法格式如下:
move_uploaded_file(string $filename, string $destination)
其中$filenameb
表示的是上传文件的文件名,这个文件名并不是上传文件的原文件名,而是通过上一步$_FILES中tmp_name得到的文件名;$destinationb
表示的是这个上传文件要移动到的位置。
执行函数执行成功的话会返回 TRUE,失败的话返回 FALSE。
接下来我们看一下示例:
把刚才的test1.txt文件上传到我在根目录中创建的一个名为phptest的文件夹中,操作如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>PHP文件上传</title> </head> <body> <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="upfile"> <input type="submit" value="上传"> </form> </body> </html> <?php if(!empty($_FILES)){ $tmpname = $_FILES['upfile']['tmp_name']; // 临时文件名称 $name = $_FILES['upfile']['name']; // 文件的原名称 $path = './phptest'; // 上传目录 $file_name = date('YmdHis').rand(100,999).$name;// 避免文件重名,更改文件名称 if(move_uploaded_file($tmpname, $path.'/'.$file_name)){ echo $name." 上传成功!"; }else{ echo $name." 上传失败!"; } } ?>
按照表单上传文件后输出结果如下:
如此则表示我想要上传的test2.txt已经上传到我需要的目录中了:
多文件上传
通过上述示例已经了解了单文件上传的过程,但是在日常使用中经常会用到的是多文件上传,那多文件上传应该怎么操作呢?
示例如下:
还和上面的示例一样,上传多个文件到我在根目录里创建的phptest文件夹里
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>PHP文件上传</title> </head> <body> <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="upfile[]"><br> <input type="file" name="upfile[]"><br> <input type="file" name="upfile[]"><br> <input type="submit" value="上传"> </form> </body> </html> <?php if(!empty($_FILES)){ $tmpname = $_FILES['upfile']['tmp_name']; $name = $_FILES['upfile']['name']; $path = './phptest'; for ($i=0; $i < count($tmpname); $i++) { $file_name = date('YmdHis').rand(100,999).$name[$i]; if(move_uploaded_file($tmpname[$i], $path.'/'.$file_name)){ echo $name[$i].' 上传成功!<br>'; }else{ echo $name[$i].' 上传失败!<br>'; } } } ?>
输出结果:
如此结果显示,多个文件已经上传到我的文件夹里了:
推荐学习:《PHP视频教程》
以上是PHP如何上传文件?看完就明白了!的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

PHP和Python各有优劣,选择取决于项目需求和个人偏好。1.PHP适合快速开发和维护大型Web应用。2.Python在数据科学和机器学习领域占据主导地位。
