美高梅官方网站3045-mgm6608美高梅app下载
PHP对文本上传的管理情势

PHP对文本上传的管理情势

作者:mgm6608美高梅app下载    来源:未知    发布时间:2020-02-10 09:21    浏览量:

将客户端文件上传到服务器端,再将服务器端的文件移动到指定目录即可。

一,比较简单的实现文件上传

$_FILES参数详解:

1、form表单

文件上传原理

$_FILES["file"]["name"] – 被上传文件的名称
$_FILES["file"]["type"] – 被上传文件的类型
$_FILES["file"]["size"] – 被上传文件的大小,以字节计
$_FILES["file"]["tmp_name"] – 存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"] – 由文件上传导致的错误代码

文件的上传一般都是经过form表单来实现的。

文件上传原理:将客户端的文件先上传到服务器端,然后再将服务器端的临时文件移动到指定的目录。

$_FILES["file"]["error"]中的["error"]值情况:

1)标签enctype属性表单中enctype="multipart/form-data"是用于设置表单的MIME编码。

客户端配置

美高梅官方网站3045,html客户端

默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data且提交方式为POST都能完整的传递文件数据。

要上传文件,我们需要采用表单,并且表单发送的形式来POST请求,而且要求将enctype设置为multipart/form-data,总结上传的条件如下:

1.客户端上传设置

2)MAX_FILE_SIZE 隐藏字段MAX_FILE_SIZE 隐藏字段必须放在文件输入字段之前,其值为接收文件的最大尺寸。这是对浏览器的一个建议,PHP 也会检查此项。如:<input type="hidden" name="MAX_FILE_SIZE" value="101321" />

浏览器表单页面

文件上传的最基本方法,是使用HTML表单选择本地文件进行提交,在form表单中可以通过<input type=”file”>标记选择本地文件。如果支持文件上传操作,必须在<form>标签中将enctype和method两个属性指明相应的值,如下所示:
★enctype=”multipart/form-data”用来指定表单编码数据方式,让服务器知道,我们要传递一个文件,并带有常规的表单信息。
★method=”POST”用来指明发送数据的方法。
另外,还需要在form表单中设置一个hidden类型的input框。其中name的值为MAX_FILL_SIZE的隐藏值域,并通过设置其VALUE的值限制上传文件的大小(单位字节),但这个值不能超过PHP的配置文件中upload_max_filesize值设置的大小。文件上传表单代码如下所示:

在浏览器端可以简单绕过此设置,不可信,因此不要指望用此特性来阻挡大文件。(不过鉴于友好性最好还是在表单中加上此项目,因为它可以避免用户在花时间等待上传大文件之后才发现文件过大上传失败的麻烦。)

表单发送方式为post
指定enctype=multipart/form-data
客户端的代码:

 代码如下

3)通过accept属性限制上传文件类型<input type='file' name='myfile' accept='文件的MIME类型' />如:accept="image/gif, image/jpeg",如果不限制图像的格式,可以写为:accept="image/*"

<form action="uploadFile.php" method="post" accept-charset="utf-8" enctype="multipart/form-data">
    请选择要上传的文件:
    <input type="file" name="myfile">
    <input type="submit" value="上传文件">
</form>
 
$_FILES文件变量

<html>
<head><title>文件上传</title></head>
<body>
<form action='upload.php' method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
选择文件<input type="file" name="上传文件">
</form>
</body>
</html>

accept 属性只能与<input type="file">配合使用。它规定能够通过文件上传进行提交的文件类型。(提示:请避免使用该属性,应该在服务器端验证文件上传。)

下面是上传一个图片然后打印整理出来的数据:

upload.php服务器端

4)例子

 
// name => 'QC8054R7QPGQ_1000x500.jpg'
// type => 'image/jpeg'
// tmp_name => '/Applications/MAMP/tmp/php/php1X5KZU'
// error => 0
// size => 229936
 
$_FILES上传的参数含义说明:

 代码如下

<form action="upload.php" method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="101321" /> 请选择您要上传的文件: <input type="file" name="myfile" accept="image/*" /><br/> <input type="submit" value="上传"/>

name:上传的文件的名称
type: 上传的文件的MIME类型
tmp_name:文件上传到服务器的临时路径
site:上传的文件的大小
error:上传的文件的错误码,0表示上传成功UPLOAD_ERR_OK

<?php
$allowtype = array('gif','png','jpg');
$size = 1000000;
$path = "./uploads"; //设置上传后保存文件的路径
 
//判断文件是否可以成功上传到服务器,$_FILES['myfile']['error']为0则表示上传成功
if ($_FILES['myfile']['error']>0){
echo '上传错误:';
switch($_FILES['myfile']['error']){
case 1: die('上传文件大小超出了PHP配置文件中的约定值:upload_max_filesize');break;
case 2:die('上传文件大小超出表单中的约定值:MAX_FILE_SIZE');break;
case 3: die('上传文件只部分被上载');break;
case 4: die('没有上传任何文件');break;
default:die('未知错误');
}
}
 
//判断上传的文件是否为允许的文件类型,通过文件名的后缀名
$hz = array_pop(explode(".",$_FILES['myfile']['name']));
//通过判断文件的后缀方式,来确定文件是否是允许上传的文件类型
if(!in_array($hz, $allowtype)){
die("这个后缀是<b>($hz)</b>,不是允许的文件类型");
}
 
//判断上传的文件是否为允许大小
if($_FILES['myfile']['size']> $size){
die("超过了允许的<b>{$size}</b>字节大小");
}
 
//为了系统安全,也为了同名文件不会被覆盖,上传后将文件名实用系统定义
$filename = data("YmdHis").rand(100, 900).".".$hz;
 
//判断是否为上传文件
if(is_uploaded_file($_FILES['myfile']['tmp_name'])){
if(!move_uploaded_file($_FILES['myfile']['tmp_name'], $path.'/'.$filename)){
die('问题:不能将文件移动到指定目录。');
}
}else{
die("问题:上传文件{$_FILES['myfile']['name']}不是一个合法的文件:");
}
//如果文件上传成功则输出
echo "文件{$upfile}上传成功,保存在目录{$path}中,大小为{$_FILES['myfile']['size']}字节";
?>

5)一次选择多个文件

移动文件

如果我们要多文件上传只要简单对于html上传表单以数据形式操作

<input type="file" name="filename" multiple="multiple" />

移动文件方式一
上传文件到服务器端是在一个临时路径下,我们需要将文件移动到指定的目录下,我们可以通过下面的函数来实现移动:

 代码如下

2、全局变量 $_FILES

 

<form action="" method="post" enctype="multipart/form-data">

下一篇:没有了
友情链接: 网站地图
Copyright © 2015-2019 http://www.zen-40.com. mgm美高梅有限公司 版权所有