(本文内容属于转载,原文链接http://blog.sina.com.cn/s/blog_4fe447d501009rzh.html)

在PHP 5中通过POST方法实现文件上传非常简单,可以上传文本文件,也可以上传二进制文件。(为避免博客文章编辑器自动转换HTML,下面的代码我用全角尖括号打出来的)

1. 文件上传使用的Form标签格式比较固定,示例如下:

<FORM ENCTYPE="multipart/form-data" ACTION="upload.php“  METHOD="post">

<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="14096">

<INPUT NAME="UploadedFile" TYPE="file"  size='15'>

<INPUT TYPE="submit" VALUE="上传文件">

</FORM>

上面语句中需要引起注意的几项是:

  • ENCTYPE="multipart/form-data",这里是固定写法,否则文件上传失败
  • ACTION="upload.php“,定义要处理上传的程序文件路径
  • METHOD="post",定义传输方式为POST,一般情况下Form提交数据都设置为POST
  • <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="14096">,这是一个隐藏域,定义了上传文件的大小上限,超过这个值时,上传失败。它必须定义在文件上传域的前面.而且这里定义的值不能超过在php.ini 文件中upload_max_filesize设置的值,否则没有意义了.(注意:MAX_FILE_SIZE 的值只是对浏览器的一个建议,实际上它可以被简单的绕过。因此不要把对浏览器的限制寄希望于该值。实际上,PHP.ini设置中的上传文件最大值,是不会失效的。但是最好还是在表单中加上 MAX_FILE_SIZE,因为它可以避免用户在花时间等待上传大文件之后才发现该文件太大了的麻烦。)
  • <INPUT NAME="UploadedFile" TYPE="file"  size='15'>,这是文件上传域,Type属性必须设置为file,但Name属性可以自定义,这个值会在代码文件中使用.

2. 处理文件上传的PHP语句也非常简单,示例代码如下:

if (isset($_FILES["UploadedFile"]))

{

$uploaddir="./";

$UploadSuccess =move_uploaded_file($_FILES['UploadedFile']['tmp_name'],$uploaddir.$_FILES['UploadedFile']['name']));

If ($UploadSuccess)

{

echo "文件上传成功,详细信息为:<br>";

print("上传文件: ".$_FILES['UploadedFile']['name']." <br>");

print("本地文件: ".$_FILES['UploadedFile']['tmp_name']." <br>");

print("大小: ".$_FILES['UploadedFile']['size']." <br>");

print("类型: ".$_FILES['UploadedFile']['type']." <br>");

print("<hr><br>");

}

}

上面代码中关键的语句说明如下:

  • $uploaddir="./";  ,定义文件要上传到的服务器上的路径
  • $UploadSuccess =move_uploaded_file($_FILES['UploadedFile']['tmp_name'],$uploaddir.$_FILES['UploadedFile']['name']));  ,将文件上传至服务器指定的目录下。
  • move_uploaded_file 函数说明如下:

bool move_uploaded_file ( string filename, string destination)

本函数检查并确保由 filename 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由 destination 指定的文件。如果 filename 不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 FALSE。如果 filename 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 FALSE。此外还会发出一条警告。如果目标文件已经存在,将会被覆盖。

  • $_FILES  这是PHP预定义的HTTP 文件上传变量。通过 HTTP POST 方法传递的已上传文件项目组成的数组。是自动全局变量。

$_FILES 数组的内容如下所示。我们假设文件上传字段的名称如上例所示,为UploadedFile。名称可随意命名。

$_FILES[' UploadedFile ']['name']

客户端机器文件的原名称。  

$_FILES[' UploadedFile ']['type']

文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。  

$_FILES[' UploadedFile ']['size']

已上传文件的大小,单位为字节。  

$_FILES[' UploadedFile ']['tmp_name']

文件被上传后在服务端储存的临时文件名。 

$_FILES[' UploadedFile ']['error']

如果文件上传失败,这里会存储错误代码,错误代码描述的意思如下:

UPLOAD_ERR_OK

值:0; 没有错误发生,文件上传成功。

UPLOAD_ERR_INI_SIZE

值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。

UPLOAD_ERR_FORM_SIZE

值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。

UPLOAD_ERR_PARTIAL

值:3; 文件只有部分被上传。

UPLOAD_ERR_NO_FILE

值:4; 没有文件被上传。

在PHP中通过POST方法实现文件上传功能相关推荐

  1. php利用ajax文件上传,如何在PHP中利用AjaxForm实现一个文件上传功能

    如何在PHP中利用AjaxForm实现一个文件上传功能 发布时间:2020-12-18 14:52:38 来源:亿速云 阅读:94 作者:Leah 如何在PHP中利用AjaxForm实现一个文件上传功 ...

  2. .NET技术 ASP.NET中常用的文件上传下载方法(多文件上传)

    文件的上传下载是我们在实际项目开发过程中经常需要用到的技术,这里给出几种常见的方法,本文主要内容包括: 1.如何解决文件上传大小的限制 2.以文件形式保存到服务器 3.转换成二进制字节流保存到数据库以 ...

  3. vue+Element ui中使用 upload实现Excel文件上传

    文章目录 业务需求: 实现方式: 具体步骤: 1.引入组件: 2.data中定义: 3.methods中方法: 业务需求: 批量导入Excel文件 实现方式: 使用组件upload 具体步骤: 1.引 ...

  4. winform中通过FileStream实现将文件上传

    winform中通过FileStream实现将文件上传 本实例实现功能:通过OpenFileDialog选择待上传的文件,并将所选文件的完整路径绑定到TreeView控间中显示,然后通过FolderB ...

  5. [RFC1867] HTML中基于表单的文件上传

    网络工作组:E. Nebel 征求意见:1867 L. Masinter 类别:试验 施乐公司 十一月 1995 HTML中基于表单的文件上传 这个备忘录的状态 这个备忘录为互联网社区定义了一个试验协 ...

  6. VS2010中使用NeatUpload实现简单的文件上传功能

    neatupload 一个免费的asp.net文件上传组件 项目地址 http://neatupload.codeplex.com/ 首先,从项目网站下载最新版(目前使用的是1.3.26) 在VS20 ...

  7. java前后端分离的实现方式_采用前后端分离的方式进行开发,实现了几种常用的文件上传功能...

    MyUploader-Backend 单文件上传,多文件上传,大文件上传,断点续传,文件秒传,图片上传 简介 采用前后端分离的方式进行开发,实现了几种常用的文件上传功能. 前端采用 vue.js + ...

  8. Spring 文件上传功能

    本篇文章,我们要来做一个Spring的文件上传功能: 1. 创建一个Maven的web工程,然后配置pom.xml文件,增加依赖: 1 2 3 4 5 <dependency>     & ...

  9. Node.js 博客实例(三)添加文件上传功能

    原教程 https://github.com/nswbmw/N-blog/wiki/_pages的第三章 上传文件眼下有三种方法: 使用 Express 自带的文件上传功能,不涉及数据库 使用 For ...

最新文章

  1. Udacity机器人软件工程师课程笔记(九)-ROS-Catkin包、工作空间和目录结构
  2. java得出两个日期之间所有日期
  3. ajax表单排序java,java如何区分是form表单请求,还是ajax请求
  4. 表面粗糙度的基本评定参数是_表面粗糙度100问,讲得明明白白
  5. 信息学奥赛C++语言:求和4
  6. thinkPHP仿QQ飞车手游模拟抽奖源码
  7. 评论中显示表情,苹果和安卓都一样
  8. 找工作经验之——准备工作
  9. Kienct与Arduino学习笔记(2) 深度图像与现实世界的深度图的坐标
  10. tomcat 6.0配置
  11. 纽微特记事:有了工作产出,领导吓坏了
  12. ColorPix最好用的屏幕取色器
  13. matlab:使用全局变量
  14. 深度 GHOST XP SP3 纯净版 2013 06
  15. 用大数据与可视化分析有钱任性的瑞幸咖啡,看它和浑水谁在说谎
  16. Linux开发板实现 NTP时间获取
  17. 『Android基础入门』:EventBus实现总线数据分发
  18. JS遍历对象,获取key、value的几种方法
  19. 小学6年级下册计算机课教案,小学六年级下册音乐教案大全
  20. ffmpeg与ffdshow的关系

热门文章

  1. 数据结构 | 有关树和二叉树的详解【内附考点精析】
  2. 强强联手 法大大电子合同金蝶云·苍穹版上线
  3. 二维离散余弦变换(DCT)与二维离散反余弦变换(IDCT)C语言实现
  4. 计算机画图学生作品小学,电脑绘画作品_需要一件小学生电脑绘画作品
  5. zabbix 监控 db2_zabbix实战 - abm
  6. nimble源码学习——广播流程源码分析1
  7. 模仿风宇博客登录蒙层弹窗(vuex+computed实现)
  8. HTTP传输协议详解(传输过程及数据格式详细)
  9. svn拉取文件合并_svn如何使用import目录作为工作拷贝+我的svn学习笔记
  10. 关于实名认证上线时无法立即返回实名认证结果的问题