微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

解读PHP中上传文件的处理问题

我们在浏览器中编辑自己的信息,会遇到上传头像;在文库中,我们会上传文档......到处存在“上传”这个词。

  PHP是最好的语言(其他语言的程序猿们不要打我...)。PHP在处理交互方面有天然的优势,自然有强大的函数来处理上传文件

  和提交一般的数据一样,上传文件也需要表单。下面建立一个特殊的表单来上传文件

rush:PHP;">
PHP" name="upload_form" method="post"> 上传的文件上传文件的提交按钮"/>

  ok,我们分析一下这个代码段。

  以上的enctype规定了数据在发送给服务器的时候采用什么编码格式。它有三个值:

  MAX_FILE_SIZE隐藏字段(单位为字节)必须放在文件输入字段之前,其值为文件的最大尺寸。这是对浏览器的一个建议,PHP也会检查此项。不过在浏览器端可以绕过这个障碍,因此不要指望用它来阻挡大文件。但是文件最大值受PHP.ini中的post_max_size= (number)M的限制。但是最好还是加上这个项目,它可以避免用户在花时间等待上传文件之后才发现大文件上传失败的麻烦。

  在用户提交文件表单之后,服务器端就可以接受数据了。PHP中有全局变量$_FILES来处理文件,假设上传字段名称为userfile(可以在字段中随意更改)。

  $_FILES['userfile']['name'] 客户端文件的原名称。   $_FILES['userfile']['type'] 文件的MIME类型,这个在PHP端并不检查,因此这个值还不一定有。   $_FILES['userfile']['size'] 上传文件的大小(单位字节)。 $_FILES['userfile']['tmp_name'] 文件上传后在服务器端存储的临时文件名。   $_FILES['userfile']['error'] 和该文件上传相关的错误代码。如果上传成功,值为0.

  文件上传后,认存储到服务器认临时目录中,在PHP.ini中的upload_tmp_dir设置为其他路径。

  在这里还得说说一个move_uploaded_file()函数

  这个函数检查并确保由 file 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由 newloc 指定的文件

  如果 file 不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 false。

  如果 file 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 false,此外还会发出一条警告。

  这种检查显得格外重要,如果上传文件有可能会造成对用户或本系统的其他用户显示内容的话。

  下面是一个PHP上传文件实例:

rush:PHP;"> 上传文件处理 PHP if (isset($_FILES['userfile'])) { $uploaddir = 'upload/'; $uploadfile = $uploaddir . basename($_FILES['userfile']['name']); echo '
';
if (move_uploaded_file($_FILES['userfile']['tmp_name'],$uploadfile)) {
echo '上传文件成功'.'
'; } else { echo '上传文件失败'.'
'; } echo '这是上传文件的一些信息:' . '
'; print_r($_FILES); echo '
';
die();
}
?>
上传表单

PHP" name="upload_form" method="post"> 上传的文件 上传文件的提交按钮"/>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返回预支付订单号的接口,目前微信支付所有场景均使用这一接口。下面介绍的是其中NATIVE的支付实现流程与PC端实现扫码支付流程
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返回预支付订单号的接口,目前微信支付所有场景均使用这一接口。下面介绍的是其中APP的支付的配置与实现流程
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户信息这个功能的开发流程。 配置 1.首先得在微信公众平台申请一下微信小程序账号并获取到小程序的AppID和AppSecret https://mp.weixin.qq.com/cgi-bin/loginpage?url=%2Fwxamp%2F
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一款开源且免费商用的后台开发框架,它基于ThinkPHP和Bootstrap两大主流技术构建的极速后台开发框架,它有着非常完善且强大的功能和便捷的开发体验,使我逐渐喜欢上了它。
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛,就离不开通讯了,然后我就想到了长连接。这里本人用的是GatewayWorker框架。
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返回预支付订单号的接口,目前微信支付所有场景均使用这一接口。下面介绍的是其中JSAPI的支付实现流程
服务器优化必备:深入了解PHP8底层开发原理
Golang的网络编程:如何快速构建高性能的网络应用?
Golang和其他编程语言的对比:为什么它的开发效率更高?
PHP8底层开发原理揭秘:如何利用新特性创建出色的Web应用