php文件上传管理系统,PHP文件上传

要想通过PHP成功地管理上传文件,需要通过以下三方面信息:

1、设置PHP配置文件中的指令:用于精细地调节PHP的文件上传功能

8e8b0421211abe6a23bd8fa8c0d4a8aa.png

2、$_FILES多维数组:用于存储各种与上传文件有关的信息,其他数据还使用$_POST去接收

$_FILES["myfile"]["name"]中的值是:客户端文件系统的文件的名称

$_FILES["myfile"]["type"]中的值是:客户端传递的文件的类型

$_FILES["myfile"]["size"]中的值是:文件的字节的大小

$_FILES["myfile"]["tmp_name"]中的值是:文件被上传后在服务器存储的临时全路径

$_FILES["myfile"]["error"]中的值是:文件上传的错误代码(php 4.2以后增加的功能)

伴随文件上传时产生的错误信息代码具体如下:

值为0(UPLOAD_ERR_OK):表示没有发生任何错误

值为1(UPLOAD_ERR_INI_SIZE):表示上传文件的大小超出了约定值。文件大小的最大值是在PHP配置文件中指定的,该指令是:upload_max_filesize

值为2(UPLOAD_ERR_FORM_SIZE):表示上传文件大小超出了HTML表单隐藏域属性的MAX_FILE_SIZE元素所指定的最大值

值为3(UPLOAD_ERR_PARTIAL):表示文件只被部分上传

值为4(UPLOAD_ERR_NO_FILE):表示没有上传任何文件

值为6(UPLOAD_ERR_NO_TMP_DIR):表示找不到临时文件夹(PHP4.3.10和PHP5.0.3)

值为7(UPLOAD_ERR_CANT_WRITE):表示文件写入失败(PHP 5.1.0)

3、PHP的文件上传处理函数:用于上传文件的后续处理

只要把临时目录下的上传的文件,复制到指定目录下指定的名字就可以完成上传

PHP提供了专门用于文件上传所使用的is_uploaded_file()和move_uploaded_file()函数

【is_uploaded_file()】

is_uploaded_file()判断文件是否是通过 HTTP POST 上传的bool is_uploaded_file ( string $filename )

如果filename所给出的文件是通过 HTTP POST 上传的则返回 TRUE。这可以用来确保恶意的用户无法欺骗脚本去访问本不能访问的文件

[注意]为了能使is_uploaded_file() 函数正常工作,必须使用$_FILES['userfile']['tmp_name'],而在从客户端上传的文件名$_FILES['userfile']['name']不能正常运作

【move_uploaded_file()】

move_uploaded_file()方法用于将上传的文件移动到新位置bool move_uploaded_file ( string $filename , string $destination )

本函数检查并确保由 filename 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由 destination 指定的文件

该函数成功时返回TRUE;如果filename不是合法的上传文件,不会出现任何操作,move_uploaded_file()将返回 FALSE;如果 filename 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file()将返回 FALSE。此外还会发出一条警告<?php

header("Content-Type:text/plain;charset=utf-8");

//判断错误

if($_FILES['file1']['error'] > 0) {

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

case 1:

case 2:

echo "上传文件太大";

break;

case 3:

echo "文件只被部分上传";

break;

case 4:

echo "没有上传任何文件";

break;

default:

echo "末知错误";

}

exit;

}

//判断类型

$arr = explode(".", basename($_FILES['file1']['name']));

$hz = array_pop($arr);

$allowtype =array("gif", "png", "jpg", "jpeg");

if(!in_array($hz, $allowtype)) {

echo "上传的类型不合法";

exit;

}

//判断大小

$maxsize= 1000000;

if($_FILES['file1']['size'] > $maxsize) {

echo "上传的文件超过了{$maxsize}字节!";

exit;

}

//随机文件名

$tmp_name = $_FILES['file1']['tmp_name'];

$src_name = "./uploads/".date("YmdHis").rand(100, 999).".".$hz;

if(move_uploaded_file($tmp_name, "$src_name")){

echo '上传成功';

}else{

echo '上传失败';

}

?>

参与评论 您还未登录,请先 登录 后发表或查看评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值