***PHP $_FILES函数详解 + PHP文件上传 move_uploaded_file() 参数的正确写法

简介: PHP $_FILES函数详解在PHP中上传一个文件建一个表单要比ASP中灵活得多。具体的看代码。如: 复制代码代码如下:     然后upload.php中可以直接用 $_FILES $_POST $_GET 等函数获取表单内容。

PHP $_FILES函数详解

在PHP中上传一个文件建一个表单要比ASP中灵活得多。具体的看代码。

如: 
复制代码代码如下:

<form enctype="multipart/form-data" action="upload.php" method="post"> 
<input type="hidden" name="MAX_FILE_SIZE" value="1000"> 
<input name="myFile" type="file"> 
<input type="submit" value="上传文件"> 
</form> 

然后upload.php中可以直接用 
$_FILES 
$_POST 
$_GET 
等函数获取表单内容。 

今天我们着重讲$_FILES函数。 
当客户端提交后,我们获得了一个$_FILES 数组 

$_FILES数组内容如下: 
$_FILES['myFile']['name'] 客户端文件的原名称。 
$_FILES['myFile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。 
$_FILES['myFile']['size'] 已上传文件的大小,单位为字节。 
$_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,但 用 putenv() 函数设置是不起作用的。 
$_FILES['myFile']['error'] 和该文件上传相关的错误代码。['error'] 是在 PHP 4.2.0 版本中增加的。下面是它的说明:(它们在PHP3.0以后成了常量) 
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; 没有文件被上传。 
值:5; 上传文件大小为0. 

文件被上传结束后,默认地被存储在了临时目录中,这时您必须将它从临时目录中删除或移动到其它地方,如果没有,则会被删除。也就是不管是否上传成功,脚本执行完后临时目录里的文件肯定会被删除。所以在删除之前要用PHP的 copy() 函数将它复制到其它位置,此时,才算完成了上传文件过程。



PHP $_FILES中error返回值详解

用PHP上传文件时,我们会用程序去监听浏览器发送过来的文件信息,首先会通 过$_FILES[fieldName]['error']的不同数值来判断此欲上传的文件状态是否正常。$_FILES[fieldName] ['error']==0代表一切正常,其它数值的具体含义请参考下面一段程序的注释部分,如有翻译不到之处还望指正

$_FILES['file']['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_NO_TMP_DIR: 6 //没有找不到临时文件夹 

UPLOAD_ERR_CANT_WRITE: 7 //文件写入失败 

UPLOAD_ERR_EXTENSION: 8 //php文件上传扩展没有打开 

UPLOAD_ERR_PARTIAL: 3 //文件只有部分被上传 

 

复制代码代码如下:

switch($_FILES[$field]['error']) {  

 

    case 1:    
        // 文件大小超出了服务器的空间大小    
        $this->setError("The file is too large (server).");    
break;   

case 2:    
        // 要上传的文件大小超出浏览器限制    
        $this->setError("The file is too large (form).");    
        break;    

    case 3:    
        // 文件仅部分被上传    
        $this->setError("The file was only partially uploaded.");    
        break;    

    case 4:    
        // 没有找到要上传的文件    
        $this->setError("No file was uploaded.");    
        break;    

    case 5:    
        // 服务器临时文件夹丢失    
        $this->setError("The servers temporary folder is missing.");    
        break;    

    case 6:    
        // 文件写入到临时文件夹出错    
        $this->setError("Failed to write to the temporary folder.");    
        break;    
}


PHP文件上传 move_uploaded_file() 参数的正确写法

该函数的作用是把上传的文件移动到一个新的位置。
有两个参数,第一个参数是你上传后的临时文件名,由系统自动生成。通常其样式为:
$_FILE["file"]["tmp_name"];
其中的file为你前台文件上传表单的名称。
第二个参数就是包含有路径的新的文件名。如:
"upload/1.jpg";
这样,就会把你上传的文件,移动到当前目录下名称upload的子目录下,并把文件名保存为:1.jpg。


 

php move_uploaded_file()上传文件实例及遇到问题的解决方法

php move_uploaded_file()函数用于将HTTP POST的文件上传到服务器,如果目标文件已经存在,将会被覆盖。本文章向大家介绍move_uploaded_file()函数的使用方法及在使用该函数时需要注意的问题和解决方法,需要的朋友可以参考一下。

php move_uploaded_file()介绍

move_uploaded_file() 函数将上传的文件移动到新位置。若成功,则返回 true,否则返回 false。

语法

move_uploaded_file(filename,destination)

参数 

参数 描述
filename 上传的文件的文件名。
destination 移动文件到这个位置。

本函数检查并确保由 filename 指定的文件是合法的上传文件。如果文件合法,则将其移动到 destination指定的位置。

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

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

注意

  1. 本函数仅用于通过 HTTP POST 上传的文件。
  2. 如果目标文件已经存在,将会被覆盖。

 

move_uploaded_file()函数实例

使用move_uploaded_file()函数上传文件到服务器。

<?php
     $tmp_filename = $_FILES['myupload']['tmp_name']; if(!move_uploaded_file($tmp_filename,"/path/to/dest/{$_FILES['myupload']['name']}")) { echo "An error has occurred moving the uploaded file.<BR>"; echo "Please ensure that if safe_mode is on that the " . "UID PHP is using matches the file."; exit; } else { echo "The file has been successfully uploaded!"; } ?>

 

move_uploaded_file上传文件失败的案例及解决方法

今天在实现一个在用户注册时上传头像图片文件的PHP脚本时,出现了问题:php脚本代码如下:

<?php  
define('ROOT',dirname(__FILE__).'/');  
  if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { if(is_uploaded_file($_FILES['file']['tmp_name'])){ $stored_path = ROOT.'/upload/'.basename($_FILES['file']['name']); if(move_uploaded_file($_FILES['file']['tmp_name'],$stored_path)){ echo "Stored in: " . $stored_path; }else{ echo 'Stored failed:file save error'; } }else{ echo 'Stored failed:no post '; } } } ?> 

当我执行执行上面的脚本时,脚本输出"Stored failed:file save error",很明显是出错了.在php_error_log文件中我看到了出错问题:权限不够,我终于找到了出错的地方:我们存放图片的目的目录对执行PHP的用户来说是没有权限的,执行PHP脚本的用户和我写脚本代码、创建图片文件夹的用户不是同一个用户,因此只需要将文件权限改为777即可。

 
如何联系我:【万里虎】www.bravetiger.cn 【QQ】3396726884 (咨询问题100元起,帮助解决问题500元起) 【博客】http://www.cnblogs.com/kenshinobiy/
目录
相关文章
|
3月前
|
PHP
php常见问题,php.ini文件不存在或者找不到,mb_strlen()函数未定义系列问题,dll模块找不到的解决
本文介绍了解决PHP常见问题的步骤,包括定位和创建`php.ini`文件,以及解决`mb_strlen()`函数未定义和DLL模块加载错误的具体方法。
php常见问题,php.ini文件不存在或者找不到,mb_strlen()函数未定义系列问题,dll模块找不到的解决
|
3月前
|
JavaScript 前端开发 安全
php学习笔记-普通表单参数提交获取及页面的重定向和一个登录小demo-day05
本文介绍了PHP中普通表单参数的提交获取、页面重定向的方法,并通过一个登录示例演示了表单参数的封装和页面跳转处理。
|
1月前
|
关系型数据库 MySQL 数据库连接
PHP内置函数
PHP内置函数
24 5
|
1月前
|
监控 PHP Apache
优化 PHP-FPM 参数配置:实现服务器性能提升
优化PHP-FPM的参数配置可以显著提高服务器的性能和稳定性。通过合理设置 `pm.max_children`、`pm.start_servers`、`pm.min_spare_servers`、`pm.max_spare_servers`和 `pm.max_requests`等参数,并结合监控和调优措施,可以有效应对高并发和负载波动,确保Web应用程序的高效运行。希望本文提供的优化建议和配置示例能够帮助您实现服务器性能的提升。
55 3
|
3月前
|
存储 API PHP
php学习笔记-php数组的创建和使用,数组常用函数-day03
关于PHP数组的创建、使用以及常用函数的详细学习笔记。
php学习笔记-php数组的创建和使用,数组常用函数-day03
|
2月前
|
Unix PHP 数据库
PHP日期和时间Date()函数获取当前时间
通过灵活运用 `date()`函数及其丰富的格式选项,PHP开发者可以轻松地在应用程序中处理和展示日期及时间信息。无论是需要精确到秒的完整时间戳,还是仅仅展示日期或时间的某一部分,`date()`函数都能胜任。理解并熟练应用这些格式化技巧,对于提升代码的可读性和维护性至关重要。
64 1
|
3月前
|
SQL 关系型数据库 数据库连接
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
本文介绍了PHP中PDO(PHP Data Objects)扩展的基本概念和使用方法。内容包括PDO类和PDOStatement类的介绍,PDO的简单使用,预定义占位符的使用方法,以及PDOStatement对象的使用。文章还讨论了绑定预定义占位符参数的不同形式,即bindValue和bindParam的区别。通过具体示例,展示了如何使用PDO进行数据库连接、数据查询、数据插入等操作。
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
|
3月前
|
前端开发 PHP
php学习笔记-php文件表单上传-day06
本文介绍了PHP文件上传处理流程、预定义变量`$_FILES`的使用、文件上传状态代码以及文件上传实现函数。同时,通过一个文件上传的小例子,演示了文件上传表单的创建、文件上传表单处理的PHP页面编写以及运行测试输出。
php学习笔记-php文件表单上传-day06
|
3月前
进入靶场,出现一张照片,右击查看源代码,发现有一个注释的source.php文件
这段代码实现了一个网站上弹出的促销海报动画效果,包含一个关闭按钮。当促销海报弹出时,会在三秒后开始抖动一两下。海报使用固定定位居中显示,带有阴影和圆角,关闭按钮位于右上角。可以通过修改时间参数调整弹出时间。
20 0
|
3月前
|
XML SQL PHP
php学习笔记-php字符串及字符串常用函数总结-day04
本文总结了PHP中字符串的三种定义方式和常用字符串处理函数,包括字符串的修剪、转换、长度计算、子串操作、比较、连接、分割及替换等操作。