php将上传的文件移动到指定目录,将上传文件移动到指定目录

PHP中应用move_uploaded_file()函数实现文件上传。但是,在执行文件上传之前,为了防止潜在的攻击对原本不能通过脚本交互的文件进行非法管理,可以先应用is_uploaded_file()函数判断指定的文件是否是通过HTTP POST 上传的,如果是则返回TRUE,则可以继续执行文件的上传操作,否则将不能够继续执行。

is_uploaded_file()函数

is_uploaded_file()函数判断指定的文件是否通过HTTP POST 上传的。其语法如下:

bool is_uploaded_file(string filename)

其中,参数filename必须指定类似于$_FILES['filename']['tmp_name']的变量,不可以使用从客户端上传的文件名$_FILES['filename']['name']。

通过is_uploaded_file()函数对上传文件进行判断,可以确保恶意的用户无法欺骗脚本去访问本不能访问的文件,如/etc/passwd。

move_uploaded_file()函数

move_uploaded_file()函数将文件上传到服务器中指定的位置。如果成功返回TRUE,否则返回FALSE。其语法如下:

bool move_uploaded_file ( string filename, string destination )

其中,参数filename指定上传文件的临时文件名,即$_FILES[tmp_name]:参数destination指文件上传后保存的新路径和名称。

说明:如果参数filename 不是合法的上传文件,不会执行任何操作,move_uploaded_file()将返回FALSE。如果参数filename是合法的上传文件,但出于某些原因无法移动,同样也不会执行任何操作,move_uploaded_file()将返回FALSE。此外还会发出一条警告。

下面编写一个实例,应用move_upload_file()函数实现文件的上传。

在本实例中,通过is_uploaded_file()函数判断指定的文件是否通过HTTP POST 上传,并运行move_upload_file()函数将上传文件移动到指定的文件夹中。具体步骤如下:

首先,创建表单,设置enctype的属性值为multipart/form-data,设置隐藏域、文件域和提交按钮,使用POST方法将数据提交到当前页面。然后,通过$_FILES获取上传文件的相关信息,并根据上传信息将文件保存在服务器的临时文件夹中。最后,通过move_upload_file()函数将上传的文件移动到指定位置。代码如下:

if(isset($_POST[sub])){//当页面中存在变量sub时

if(!is_dir("images")){//如果不存在images文件夹

mkdir("images")){//创建此文件夹

}

$file=$_FILES['text'];//将图片的相关信息保存在数组中

if(is_uploaded_file($file['tmp_name'])){//判断文件是否是一个上传文件

$rand=rand(1,1000);//随机取1~1000的随机数一个

$floatTime=microtime();//获取此时刻的微秒数

$str=substr($file['name'],-4,4);//截取上传文件名称后4位

$path='images/".($and+$floatTime).$str;//拼接图片路径

if(move_uploaded_file($file['tmp_name'],$path)){//将文件移动到指定文件夹并输出信息

echo "上传成功,文件名称为:".($and+$floatTime).$str;

}

}

}

?>

454f4984a4cf9c6445a623fc860fc491.png

#one{

margin:100px 400px;

width:350px;

height:150px;

-moz-border-radius: 10px;

-webkit-border-radius: 10px;

border-radius:10px;

behavior: url(ie-css3.htc);

background-color:white;

border:1px solid #96D5EB;

}

.three{

font-size: 30px;

font-family: "方正黄草简体";

padding:15px 15px;

}

.one{

border:1px solid red;

margin-left:40px;

}

.two{

border:1px solid red;

height:20px;

background-color:white;

}

.four{

font-size: 15px;

color:red;

padding-left:20px;

}

文件上传

if(isset($_POST[sub])){

$_SESSION[sub]=$_POST[sub];

if(!is_dir("images")){

mkdir("images");

}

$file=$_FILES['text'];

if(is_uploaded_file($file['tmp_name'])){

$rand=rand(1,1000);

$floatTime=microtime();

$str=substr($file['name'],-4,4);

$path="images/".($and+$floatTime).$str;

if(move_uploaded_file($file['tmp_name'],$path)){

echo "上传成功,文件名称为:".($and+$floatTime).$str;

}

}

}

?>

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

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值