PHP上传文件

格式问题:
FORM标签enctype属性 设置成:   multipart/form-data    才能完整的传递文件数据

<form enctype="multipart/form-data" method="post" name="upform">    <!-- 格式设置 -->
<input name="upfile" type="file">    


$_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 选项指定的值。 
3: 文件只有部分被上传。 
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都不对:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值