PHP 图片文件上传实现代码 php  /  管理员 发布于 7年前   265
为了网站的安全,肯定不让上传php文件,如果有人进入你的后台,上传了一个php文件,你的网站源码,全部救变成他的了,直接打包看你的代码。所以一定要控制上传的目录与文件类型,一般只可以上传图片。创建一个文件上传表单 允许用户从表单上传文件是非常有用的。 请看下面这个供上传文件的 HTML 表单: 复制代码 代码如下: enctype="multipart/form-data"> Filename: 请留意如下有关此表单的信息: 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。 标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。 注释:允许用户上传文件是一个巨大的安全风险。请仅仅允许可信的用户执行文件上传操作。 创建上传脚本 "upload_file.php" 文件含有供上传文件的代码: 复制代码 代码如下: if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . ""; } else { echo "Upload: " . $_FILES["file"]["name"] . ""; echo "Type: " . $_FILES["file"]["type"] . ""; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } ?> 通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。 第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就像这样: 复制代码 代码如下: $_FILES["file"]["name"] - 被上传文件的名称 $_FILES["file"]["type"] - 被上传文件的类型 $_FILES["file"]["size"] - 被上传文件的大小,以字节计 $_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称 $_FILES["file"]["error"] - 由文件上传导致的错误代码 这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制。 上传限制 在这个脚本中,我们增加了对文件上传的限制。用户只能上传 .gif 或 .jpeg 文件,文件大小必须小于 20 kb: 复制代码 代码如下: if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000)) { if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . ""; } else { echo "Upload: " . $_FILES["file"]["name"] . ""; echo "Type: " . $_FILES["file"]["type"] . ""; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } } else { echo "Invalid file"; } ?> 注释:对于 IE,识别 jpg 文件的类型必须是 pjpeg,对于 FireFox,必须是 jpeg。 保存被上传的文件 上面的例子在服务器的 PHP 临时文件夹创建了一个被上传文件的临时副本。 这个临时的复制文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置: 复制代码 代码如下: if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000)) { if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . ""; } else { echo "Upload: " . $_FILES["file"]["name"] . ""; echo "Type: " . $_FILES["file"]["type"] . ""; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb"; echo "Temp file: " . $_FILES["file"]["tmp_name"] . ""; if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "Invalid file"; } ?> 上面的脚本检测了是否已存在此文件,如果不存在,则把文件拷贝到指定的文件夹。 注释:这个例子把文件保存到了名为 "upload" 的新文件夹。您可能感兴趣的文章:一个经典的PHP文件上传类分享php+ajax实现图片文件上传功能实例PHP实现视频文件上传完整实例php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)配置php.ini实现PHP文件上传功能php+jQuery.uploadify实现文件上传教程PHP实现文件上传功能实例代码php 动态多文件上传Thinkphp多文件上传实现方法php文件上传原理与实现方法详解 上一条: 服务器web工具 php环境下 下一条: php目录操作函数之获取目录与文件的类型 昵称: 邮箱: 0条评论 (评论内容有缓存机制,请悉知!)最新最热 分类目录 人生(杂谈) 技术 linux Java php 框架(架构) 前端 ThinkPHP 数据库 微信(小程序) Laravel Redis Docker Go swoole Windows Python 苹果(mac/ios) 相关文章 Laravel从Accel获得5700万美元A轮融资(0个评论) PHP 8.4 Alpha 1现已发布!(0个评论) 用Time Warden监控PHP中的代码处理时间(0个评论) 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论) Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论) 近期文章 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论) 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论) gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论) 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论) 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论) Laravel从Accel获得5700万美元A轮融资(0个评论) 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论) 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论) PHP 8.4 Alpha 1现已发布!(0个评论) Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论) 近期评论 122 在学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人.. 123 在Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分.. 原梓番博客 在在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。.. 博主 在佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章.. 1111 在佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光.. 文章归档 2016-10 2016-11 2017-06 2017-07 2017-08 2017-09 2017-11 2017-12 2018-01 2018-02 2018-03 2020-03 2020-04 2020-05 2020-06 2020-07 2020-09 2021-02 2021-03 2021-04 2021-05 2021-06 2021-07 2021-08 2021-09 2021-10 2021-11 2021-12 2022-01 2022-02 2022-05 2022-06 2022-07 2022-08 2022-09 2022-10 2022-11 2022-12 2023-01 2023-02 2023-03 2023-04 2023-05 2023-06 2023-07 2023-08 2023-09 2023-10 2023-11 2023-12 2024-01 2024-02 2024-03 2024-04 2024-05 2024-06 2024-07 2024-09 Top
创建一个文件上传表单 允许用户从表单上传文件是非常有用的。 请看下面这个供上传文件的 HTML 表单:
昵称:
邮箱:
122 在
123 在
原梓番博客 在
博主 在
1111 在
Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号