php 上传文件_在接受,php 上传文件

fileupload.php:

/**

* php上传文件时的配置:

* 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为单位

*/

//要上传文件,必须要表单.详细解析如下;

/**

* ENCTYPE="mult ipart/form-data" ,这里是固定写法,否则文件上传失败

ACTION="upload.php" ,定义要处理上传的程序文件路径

METHOD="post" ,定义传输方式为 POST ,一般情况下 Form 提交数据都设置为 POST

< input type="hidden" name="MAX_FILE_SIZE" value="10000000" >,这是一个隐藏域, value的值(以字节B为单位)定

义了上传文件的大小上限,超过这个值时,上传失败。它必须定义在文件上传域的前面 .

而且这里定义的值不 能超过在 php.ini 文件中 upload_max_filesize 设置的值 , 否则没有意

义了 . (注意: MAX_FILE_SIZE 的值只是对浏览器的一个建议,实际上它可以被简单 的

绕过。因此不要把对浏览器的限制寄希望于该值。实际上, PHP.ini 设置中的上传文件最

大值,是不会 失效的。但是最好还是在表单中加上 MAX_FILE_SIZE ,因为它可以避

免用户在花时间等待上传大文件之后才发现该文件太大了的麻烦。)

1MB=1024KB,1KB=1024B,B是byte。

, 这是文件上传域 ,Type 属性必须设置为 file, 但 Name属性

可以自定义 , 这个值会在代码文件中使用 .

*

*/

?>

上传文件:

upload.php:

/**

* 接受上传文件

* $_FILES 超级全局变量,它储存各种与上传有关的信息,这些信息对于通过 PHP 脚本

上传到服务器的文件至关重要。

1. 存储在 $_FILES["userfile"]["tmp_name"] 变量中的值就是文件在 Web 服务器中临时存

储的位置。

2. 存储在 $_FILES["userfile"]["name"] 变量中的值就是用户系统中的文件名称。

3. 存储在 $_FILES["userfile"]["size"] 变量中的值就是文件的字节大小。

4. 存储在 $_FILES["userfile"]["type"] 变量中的值就是文件的 MIME 类型,例如: text/plain

或 image/gif 。

5. 存储在 $_FILES["userfile"]["error"] 变量中的值将是任何与文件上载相关的错误代码。

这是在 PHP4.2.0 中增加的新特性。 error 分别提供了一些数组常量: 0: 表示没有发生错误, 1:

表示上载文件的大小超出了约定值。文件大小的最大值是 PHP 配置文件中指定的,该指令

是 upload_max_filesize 。 2: 表示上载文件大小超出了 HTML 表单的 MAX_FILE_SIZE 元素 所

指定的最大值。 3: 表示文件只被部分上载。 4: 表示没有上载任何文件。

*/

//[userfile][name]表示上传的文件名

//[userfile][type]表示文件的类型

//[userfile][tmp_name]表示上传文件的临时存放位置

//[userfile][error]表示上传文件的错误类型,0表示没有错误

//[userfile][size]表示上传文件的字节大小

print_r($_FILES);

echo '
';

define('MAX_SIZE', 20000000);//定义MAX_SIZE常量的值为20M

$fileMimes = array('image/jpeg','image/pjpeg','image/png','image/x-png','image/gif');

//is_uploaded_file():判断文件是否通过HTTP POST上传的。

//通过HTTP POST上传后,文件会存放在临时文件夹下

//第二个问题,只能充许jpg类型文件上传.下面的代码在ie下会有bug。因为在ie中上传的.jpg文件,后缀会变成jpeg。

/*if($_FILES['userfile']['type']!='image/jpeg'){

echo "";

exit;

}*/

//所以,为了兼容ie与firefox下导致上传的.jpg文件能正确执行。需要采用如下的代码。

/*if($_FILES['userfile']['type']!='image/jpeg' && $_FILES['userfile']['type']!= 'image/pjpeg'){

echo "";

exit;

}*/

switch ($_FILES['userfile']['type']) {

case 'image/jpeg': //火狐支持的

;

break;

case 'image/pjpeg': //ie 支持的

break;

case 'image/gif':

break;

case 'image/png': //火狐支持的

break;

case 'image/x-png'://ie支持的

break;

default:echo "";

exit;

}

//将上面的switch代码再进行改进。在上面定义一个数组变量$fileMimes.用in_array()函数来判断类型是否为数组中的一种。如下:

//先判断数组变量是否存在

if (is_array($fileMimes)){

//如果数组变量存在,则判断文件的后缀名是否在定义的数组变量中

if (!in_array($_FILES['userfile']['type'], $fileMimes)){

echo "";

exit;

}

}

//如果需要允许.png,.gif格式的文件上传,用上面的格式写的话,会很复杂。可以考虑采用下面的方式实现

//先判断文件名比先判断文件大小,性能更高

//第一个问题:如果上传错误,怎么办?

if ($_FILES['userfile']['effor']>0){

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

case 1:echo "";

break;

case 2:echo "

指定的最大值。');history.back();";

break;

case 3:echo "";

break;

case 4:echo "";

break;

}

exit;

}

//下面这句最后用来判断上传的文件是否超过20M。自定义的。如果在表单中没有指定value的值,则需要在此做判断

if ($_FILES['userfile']['size']>MAX_SIZE){

echo "";

}

if(is_uploaded_file($_FILES['userfile']['tmp_name'])) {

//如果找到临时文件,则在这里进行用代码实现移动文件到目的地。函数:move_uploded_file(),返回布尔值

//第一个参数写上临是文件地址,第二个参数写上需要存文件的目的地址(需要先判断目录是否存在)

//如果想屏蔽页面的上警告信息,则需要在代码前加上@符号即可.@move_uploaded_file($_FILES['userfile']['tmp_name'], 'uploads/'.$_FILES['userfile']['name'])

if (!move_uploaded_file($_FILES['userfile']['tmp_name'], 'uploads/'.$_FILES['userfile']['name'])){

//移动失败,则执行内部代码

//echo '移动失败!';

echo "";

exit;  //后面的代码就不执行

}

//echo '上传的临时文件已找到,等待移动中......';

}else {

echo "";

exit;

}

//全部通过就上传成功

//必须传一个值给(文件上传的地址)uploadseccess.php.

echo "";

?>

uploadsuccess.php:

//接收upload.php以链接形式传递过来的参数。是get方式

$url = $_GET['url'];

  echo ''.%24url.'';

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP默认的上限定是最大2M,想上超过此设定的文件,需要调整PHP、apache等的一些参数. 下面,我们简要介绍一下PHP文件涉及到的一些参数: 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在脚本正在执行某些重要过程的时候将脚本关闭 对于linux主机,可能在/etc/httpd/conf.d/access.conf/下面里面还有php.conf 文件,这个文件可能会解决一些系统的文件大小限制问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值