-
php轻松实现文件上传功能
这篇文章主要介绍了php轻松实现文件上传功能的全部代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
本文分为五个部分针对php上传文件进行分析讲解,具体内容如下
文件上传变量
将服务器上的临时文件移动到指定目录下
php.ini上传相关配置
error错误号
单文件上传实例
1.文件上传变量
- //$_FILES:文件上传变量
- #name 文件的名称
- #type 文件的类型
- #tmp_name 临时文件名
- #size 文件的大小
- #error 错误信息
- $filename = $_FILES["myFile"]["name"];
- $type = $_FILES["myFile"]["type"];
- $tmp_name = $_FILES["myFile"]["tmp_name"];
- $size = $_FILES["myFile"]["size"];
- $error = $_FILES["myFile"]["error"];
2.将服务器上的临时文件移动到指定目录下
- //1.move_uploaded_file($tmp_name,$destination):将服务器上的临时文件移动到指定目录下
- #上传后文件名字,移动成功返回true,否则返回false
- move_uploaded_file($tmp_name,"D:/".$filename);
- //2.copy($tmp_name,$destination)
- copy($tmp_name,"D:/".$filename);
3.php.ini上传相关配置
- # file_uploads=On 支持HTTP上传
- # upload_tmp_dir="" 临时文件保存的目录
- # upload_max_filesize=2M 允许上传文件的最大值
- # max_file_uploads=20 允许一次上传的最大文件数
- # post_max_size=8M post方式发送数据的最大值
- # max_execution_time = 1 设置了脚本被解析器终止之前允许的最大执行时间,单位为秒,防止程序写的不好而占尽服务器资源
- # max_input_time = 60 脚本解析输入数据允许的最大时间,单位为秒
- # max_input_nesting_level = 64 设置输入变量的嵌套深度
- # max_input_vars = 1000 接受多少输入的变量
- # memory_limit = 128M 最大单线程的独立内存使用量
4.error错误号
# 0,没有错误发生,文件上传成功。
# 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
# 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
# 3,文件只有部分被上传。
# 4,没有文件被上传。
# 6,找不到临时文件夹。
# 7,文件写入失败。
# 8,上传的文件被PHP扩展程序中断
5.单文件上传实例
form.html
- <!doctype html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Document</title>
- </head>
- <body>
- <form action="fileUpload.php" method="post" enctype="multipart/form-data">
- 请选择你要上传的文件:
- <input type="file" name="myFile"><br>
- <input type="submit" value="上传文件">
- <!--限制客户端上传文件的最大值 隐藏域另起一行-->
- <!--<input type="hidden" name="MAX_FILE_SIZE" value="字节数">-->
- <!--accept设置上传文件的类型-->
- <!--<input type="file" name="myfile" accept="image/jpg,image/png,image/gif">-->
- </form>
- </body>
- </html>
fileUpload.php
- header("content-type:text/html;charset:utf-8");
- $fileInfo = $_FILES["myFile"];
- $filename = $fileInfo["name"];
- $type = $fileInfo["type"];
- $error = $fileInfo["error"];
- $size = $fileInfo["size"];
- $tmp_name = $fileInfo["tmp_name"];
- $maxSize=2*1024*1024;//允许的最大值
- $allowExt=array("jpeg","jpg","gif");
- $flag = true;//检测是否为真实的图片类型
- //判断错误号
- if($error == 0){
- //判断上传文件的大小
- if($size>$maxSize){
- exit("上传文件过大");
- }
- //检测文件类型
- //取出文件扩展名
- $ext = pathinfo($filename,PATHINFO_EXTENSION);
- if(!in_array($ext,$allowExt)){
- exit("非法文件类型");
- }
- //检测是否为真实的图片类型
- if($flag){
- if(@!getimagesize($tmp_name)){
- exit("不是正的图片类型");
- }
- }
- //创建目录
- $path = "D:/test/";
- if(!file_exists($path)){
- mkdir($path,0777,true);
- chmod($path,0777);
- }
- //确保文件名唯一,防止重名覆盖
- $uniName = md5(uniqid(microtime(true),true)).".".$ext;
- $destination = $path.$uniName;
- if(@move_uploaded_file($tmp_name,$destination)){
- echo "上传成功";
- }else{
- echo "上传失败";
- }
- }else{
- switch($error){
- case 1:
- case 2:
- case 3:
- case 4:
- case 6:
- case 7:
- case 8:
- echo "上传错误";
- break;
- }
- }
希望本文所述对大家学习php程序设计有所帮助。
出处:http://www.phpfensi.com/php/20210712/17196.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式