最新消息:点击查看大S的省钱秘笈

简单的PHP上传代码

网络相关 Slyar 164浏览 0评论

文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

昨天因为校会要做一个上传页面,于是操起PHP简简单单写了一个上传代码,先备忘一下,有时间继续完善。

首先是上传的提交页面upfile.html

1. PHP支持HTML以POST的方法传输文件,但是form中必须声明enctype的属性="multipart/form-data",否则整个form表单将不起任何作用。

2. form表单中必须含有一个name为MAX_FILE_SIZE的隐藏域,这个隐藏域用来指定用户最大能上传的文件大小,必须声明在所有其他input标签之前。如果文件超大的话,浏览器直接就可以给出提示,不必浪费上传的时间。

下面就是上传处理文件upload.php

本来应该是使用MIME类型来限制上传的,因为单纯使用后缀名限制文件类型会带来安全问题,但是实验的时候发现Firefox和IE对于一些文件的MIME类型看法不同...因为我写这个上传代码的初衷是上传rar、zip、txt、c之类的非图片类文件,安全问题不会很大,所以暂时先使用后缀判断吧...

PHP默认的上传限定是最大2M,想上传超过此设定的文件,需要调整PHP、apache等的一些参数,这些参数位于php.ini文件内:

file_uploads

是否允许通过HTTP上传文件的开关,默认为ON即是开

upload_tmp_dir

upload_tmp_dir用来说明PHP上传的文件放置的临时目录,要想上传文件,得保证服务器没有关闭临时文件和有对文件夹的写权限,如果未指定则PHP使用系统默认值

upload_max_filesize

允许上传文件大小的最大值,默认为2M

post_max_size

控制在采用POST方法进行一次表单提交中PHP所能够接收的最大数据量。如果希望使用PHP文件上传功能,则需要将此值改为比upload_max_filesize要大

max_input_time

以秒为单位对通过POST、GET以及PUT方式接收数据时间进行限制。如果应用程序所运行环境处在低速链路上,则需要增加此值以适应接收数据所需的更多时间

memory_limit

为了避免正在运行的脚本大量使用系统可用内存,PHP允许定义内存使用限额。通过memory_limit变量来指定单个脚本程序可以使用的最大内存容量变量memory_limit的值应当适当大于post_max_size的值

max_execution_time

max_execution_time设置了在强制终止脚本前PHP等待脚本执行完毕的时间,此时间以秒计算。当脚本进入了一个无限循环状态时此变量非常有用。然而,当存在一个需要很长时间完成的合法活动时(例如上传大型文件),这项功能也会导致操作失败。在这样的情况下必须考虑将此变量值增加,以避免PHP在脚本正在执行某些重要过程的时候将脚本关闭

转载请注明:Slyar Home » 简单的PHP上传代码

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (8)

  1. 注释写的很详细,一下就看懂了,谢谢楼主
    郑大爱前端3年前 (2013-07-09)回复
  2. /* 获取上传文件信息 */ $upfile=&$HTTP_POST_FILES['file']; 这段为什么加个&号? 另外,我不知道 $HTTP_POST_FILES 是否等同于 $_FILES,反正我改为 $upfile=$_FILES['file']; 就上传成功了。
    zola4年前 (2012-11-01)回复
    • 我依照你的方法修改后,显示这个页面打不开了!
      份儿饭3年前 (2013-09-24)回复
  3. 还不错 就是 最后面 的 ERROR 我这捕获不到
    司法所地方4年前 (2012-07-03)回复
  4. 一直失败,在判断类型那里就卡住了。不管什么类型,都是显示“对不起,您只能上传以下类型文件”
    kylin6年前 (2011-06-01)回复
  5. 这个东西实用
    智康博客8年前 (2009-05-19)回复
  6. @Felix021, 恩,我有在php_manual网页上看上传处理,差不多呀...
    Slyar8年前 (2009-05-15)回复
  7. 这个。。建议看看php_manual_zh.chm的 特点->文件上传处理
    Felix0218年前 (2009-05-14)回复