现在的位置: 首页学习笔记>正文
PHP上传文件初步分析
发表于6年前 学习笔记 评论数 1

昨天学习了COOKIE 今天我们来学习上传文件,

资料或者照片.

 

有一些配置指令可用于精细地调节 PHP 的文件上传功能。这些指令用来确定是否启用

PHP 的文件上传、可允许的最大上传文件大小、可允许的最大脚本内存分配和其他各种重

要的资源。

 

配置文件在 AppServ\php5的  php.ini-dist这个文件.

 

 

1.file_uploads=on|off : 确定服务器上的 PHP 脚本是否可以接受文件上传。

2.max_execution_time=integer :PHP 脚本在注册一个致命错误之前可以执行的最长时

间,以秒为单位。

3.memory_limit=integer : 设置脚本可以分配到的最大内存,以 MB 为单位。这可以防

止失控的脚本独占服务器内存。

4.upload_max_filesize=integer :设置上传文件最大大小,以MB 为单位。此指令必须小

于 post_max_size。

5.upload_tmp_dir=string :设置上传文件在处理之前必须存放在服务器的临时一个位置,

直到文件移动到最终目的地为止。

6.post_max_size=integer :确定通过 POST 方法可以接受的信息的最大大小,以 MB 为

单位。

 

理论搞定,开始实战.

 

第一个页面phpsc.php 代码如下.

 

独家记忆

 

 

  1. <?php   
  2.   
  3. <form enctype="multipart/form-data" action="PHPSC3.php" method="post">   
  4. <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />   
  5. 上传文件: <input type="file" name="userfile" />   
  6. <input type="submit" value="上传" />   
  7. </form>   
  8.   
  9. // enctype="multipart/form-data" 这是一个固定上传的写法,否则就失败了.   
  10. //这个可以提示最大的文件上传大小是1MB .. 但是这个没什么实际作用 .   
  11. //因为这个上传大小实际控制的是配置文件里的 upload_max_filesize=integer 默认一般是2MB.   
  12. //input type="hidden" name="MAX_FILE_SIZE" value="1000000">,这是一个隐藏域,定   
  13. //义了上传文件的大小上限,超过这个值时,上传失败。它必须定义在文件上传域的前面.   
  14. //而且这里定义的值不 能超过在php.ini 文件中upload_max_filesize 设置的值,否则没有意   
  15. //义了.(注意:MAX_FILE_SIZE 的值只是对浏览器的一个建议,实际上它可以被简单的   
  16. //绕过。因此不要把对浏览器的限制寄希望于该值。实际上,PHP.ini设置中的上传文件最   
  17. //大值,是不会 失效的。但是最好还是在表单中加上 MAX_FILE_SIZE,因为它可以避   
  18. //免用户在花时间等待上传大文件之后才发现该文件太大了的麻烦。)   
  19. //<input type="file" name="userfile" />,这是文件上传域,Type属性必须设置为file, 但Name属性   
  20. //可以自定义,这个值会在代码文件中使用.   
  21.   
  22.   
  23. //这个页面都解释完了,然后我们来学习一个超级全局变量   
  24.   
  25. //$_FILES 其实是一个二维数组.   
  26. //我们这样来看.   
  27. 第二个页面 phpsc3.php    
  28. 如下 就这一行. - -   
  29. print_r($_FILES);   
  30.   
  31. 然后我们在PHPSC1.php上传一个图片   
  32.   
  33. 看看直接跳转到PHPSC3的代码返回的是   
  34.   
  35. Array   
  36. (   
  37.     [userfile] => Array   
  38.         (   
  39.             [name] => 10bc31e733434e43a1a75bf5aebbb07c0001.jpg   
  40.             [type] => image/jpeg   
  41.             [tmp_name] => C:\Windows\Temp\phpD721.tmp   
  42.             [error] => 0   
  43.             [size] => 59896   
  44.         )   
  45.   
  46. )   
  47.   
  48. 现在我们来分析这里的东西.   
  49. //$_FILES 超级全局变量,它储存各种与上传有关的信息,这些信息对于通过 PHP 脚本   
  50. //上传到服务器的文件至关重要。   
  51. //1.存储在$_FILES["userfile"]["tmp_name"] 变量中的值就是文件在 Web 服务器中临时存   
  52. //储的位置。   
  53. //2.存储在$_FILES["userfile"]["name"]变量中的值就是用户系统中的文件名称。   
  54. //3.存储在$_FILES["userfile"]["size"]变量中的值就是文件的字节大小。   
  55. //4.存储在$_FILES["userfile"]["type"]变量中的值就是文件的 MIME 类型,例如:text/plain   
  56. //或 image/gif。   
  57. //5.存储在$_FILES["userfile"]["error"]变量中的值将是任何与文件上载相关的错误代码。   
  58. //这是在 PHP4.2.0 中增加的新特性。error 分别提供了一些数组常量:0:表示没有发生错误,1:   
  59. //表示上载文件的大小超出了约定值。文件大小的最大值是 PHP 配置文件中指定的,该指令   
  60. //是 upload_max_filesize。2:表示上载文件大小超出了 HTML 表单的 MAX_FILE_SIZE 元素所   
  61. //指定的最大值。3:表示文件只被部分上载。4:表示没有上载任何文件。   
  62.   
×
腾讯微博