格式问题:
设置成:
multipart/form-data
才能完整的传递文件数据
<form enctype="multipart/form-data" method="post" name="upform"> <!-- 格式设置 -->
<input name="upfile" type="file">
是预定义超级全局数组中唯一的二维数组,用于存储与上传文件相关的各种信息)
$_FILES['myFile']['name'] 客户端文件的原名称。
$_FILES['myFile']['type'] 文件的 MIME 类型,例如"image"。
$_FILES['myFile']['size'] 已上传文件的大小,单位为字节。
$_FILES['myFile']['tmp_name'] 储存的临时文件名,一般是系统默认。
$_FILES['myFile']['error'] 该文件上传相关的错误代码。
关于$_FILES['myFile']['error']:
0:文件上传成功。
1:超过了php.ini中限制的文件大小。
2:超过了文件大小 MAX_FILE_SIZE 选项指定的值。
文件只有部分被上传。
4:没有文件被上传。
5:上传文件大小为0。
move_uploaded_file用于移动文件:
move_uploaded_file(临时文件,目标位置和文件名);
判断是否上传成功:
is_uploaded_file 函数
<?php
print_r($_FILES["upfile"]);
?>
<form enctype="multipart/form-data" method="post" name="upform">
上传:<input name="upfile" type="file">
<input type="submit" value="上传">
<!--
Array ( [name] => 捕获.JPG [type] => image/jpeg [tmp_name] => D:\wamp\tmp\php6491.tmp [error] => 0 [size] => 14061 )
-->
遇到的问题及解决:
Undefined index: upfile
没有上传文件,所以会出现这样的提示,用@屏蔽之
move_uploaded_file(up/matrix.JPG): failed to open stream: No such file or directory
不用相对路径,使用绝对路径:
例如:
move_uploaded_file($file['tmp_name'],'up/'.$file['name']);
改成:
move_uploaded_file($file['tmp_name'],'D:/wamp/www/up/'.$file['name']);
本想做一个图片预览,但是却显示不出来。查了查,现在很多浏览器
不支持预览本地图片,实现预览服务器上的文件是可以的。
<title>upfile</title>
<?php
function check($type,$size){
$ok=1;
$tag1=0;
$tag2=0;
$sizeLimit=2000000; // 200W B '=' 2M
switch($type){ //限制上传类型
case 'image/jpeg':
$tag1=1;
break;
case 'image/jpg':
$tag1=1;
break;
case 'image/png':
$tag1=1;
break;
}
if($size<=$sizeLimit) $tag2=1;
if($tag1==0&&$tag2==0) return -3; // type 和 size 两个条件均不符合
if($tag1==0) return -1;
if($tag2==0) return -2;
return 0; // OK
}
if(@is_uploaded_file($_FILES['upfile']['tmp_name'])==true){
$file=$_FILES['upfile'];
$type=$file['type'];
$ok=check($type,$file['size']);
if($ok==-3) {
echo "<script> alert('Image type is wrong and size > 2M.') </script>"; // javascript
}
else if($ok==-1){
echo "<script> alert('Image type is wrong.') </script>";
}
else if($ok==-2){
echo "<script> alert('Image size > 2M.') </script>";
}
else {
if($file['error']==0){
$dest='D:/wamp/www/up/';
$r=move_uploaded_file($file['tmp_name'],"".$dest.$file['name']);
if($r) echo "<script> alert('上传成功') </script>";
}
else echo $file['error'];
}
}
?>
<form enctype="multipart/form-data" method="post" name="upform">
上传:<input name="upfile" type="file">
<input type="submit" value="上传">
效果:
合格文件:
type不对:
type和size都不对: