仓库管理表格下载:php文件上传RAR的mime类型

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/27 17:10:58
为什么做好上传的代码
switch ($_FILES['userfile']['type']) {
case "application/zip":
break;
case "application/rar":
break;
case "text/plain":
break;
default:
print "您上传的文件类型不对";
exit(0);
break;
}
为什么上传TXT文件正常
然而上传ZIP和RAR都说文件类型不对呢

首先要建立一个文件夹和两个文件,
File文件夹,用于存放上传的文件。
choose.htm,用于选择上传的文件。
upload.php,用于处理上传的文件。
第一步:建立 File 文件夹。
第二步:建立 choose.htm 文件:
第三步:建立 upload.php 文件;

第四步:格式化上传的文件,完成;

在接收文件的php中写上:

$filetype=$_FILES['userfile']['type'];
echo"$filetype";

就可看到上传文件的mime类型.

ZIP的MIME类型用application/x-zip-compressed
RAR的MIME类型用application/octet-stream

你的代码可修改为:
switch ($_FILES['userfile']['type']) {
case "application/x-zip-compressed":
break;
case "application/octet-stream":
break;
case "text/plain":
break;
default:
print "您上传的文件类型不对";
exit(0);
break;
}

首先要建立一个文件夹和两个文件,具体如下:

File —————— 文件夹,用于存放上传的文件。
choose.htm —————— htm文件,用于选择上传的文件。
upload.php —————— php文件,用于处理上传的文件。

第一步:建立 File 文件夹。

第二步:建立 choose.htm 文件,代码如下:
____________________________________________________________________________________________________________

<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FLIE_SIZE" value="1000000" />
上传此文件:
<input name="userfile" type="file" id="userfile" />
<input type="submit" name="Submit" value="上传" />
</form>
____________________________________________________________________________________________________________

第三步:建立 upload.php 文件,代码如下:
____________________________________________________________________________________________________________
<?php

//上传文件错误判定
if($_FILES['userfile']['error']>0)
{
echo '错误:';

switch($_FILES['userfile']['error'])
{
case 1: echo '文件尺寸超过允许的最大上传限度!'; break;
case 2: echo '文件尺寸超过允许的最大上传限度!'; break;
case 3: echo '只有部分文件被上传!'; break;
case 4: echo '没有任何文件被上传!'; break;
}
exit;
}

//上传文件格式判定
if($_FILES['userfile']['type'] !='text/plain')
{
echo '错误:非法文件格式!';
exit;
}

//设置文件保存路径
$upfile = './File/' . $_FILES['userfile']['name'];

if(is_uploaded_file($_FILES['userfile']['tmp_name']))
{
if(!move_uploaded_file($_FILES['userfile']['tmp_name'],$upfile))
{
echo '错误:没有将文件移动到指定目录!';
exit;
}
}
else
{
echo '错误:可能文件上传被攻击!文件名:';
echo $_FILES['userfile']['name'];
}

echo '文件上传成功!';

//格式化上传的文件
$fp = fopen($upfile,'r');
$contents = fread($fp,filesize($upfile));
fclose($fp);

$contents = strip_tags($contents);
$fp = fopen($upfile,'w');
fwrite($fp,$contents);
fclose($fp);

//显示上传文件内容
echo '上传文件的内容为:';
echo $contents;
?>
____________________________________________________________________________________________________________

测试一下:

1、建立一个 123.txt 文件,里面输入一些纯文本字符,比如 abc,上传成功!

2、我们再来试看其他后缀名,如.exe,.php,.htm之类的,只要非txt,就将导致失败!

3、把任意一个大于1M的文件名改为123.txt并上传,我们将发现超过限制大小的文件将导致上传失败!

4、将123.txt的内容改掉,删除所有内容,输入 <html>HTML code</html>,保存并上传,我们会发现上传失败!

5、将123.txt的内容改掉,删除所有内容,输入 <?php echo'PHP code'; ?>保存并上传,我们会发现 File 文件夹中有一个0字节的,没有任何内容的123.txt文件!