九,php中上传文件

1,php网页上传文件大小有限制的,默认最大2M。可以修改php.ini调节大小,upload_max_filesize = 2M。
网页上传使用http协议,上传大文件性能不好;有些公司做一个客户端软件,使用tcp协议,专门上传大文件的。
2,文件系统只识别GB2312,不识别utf-8,因此需要对中文进行转码。iconv("utf-8","GB2312",$fileNew),$fileNew是上传的我那件存放的路径。
3,上传的文件全部放在一个目录下是非常不明智的,可以将每个用户建一个文件夹,每个用户所有资料上传到其自己文件夹。

4,文件上传的实例

(1) 文件上传的页面

<form action="uploadProcess.php" enctype="multipart/form-data" method="post">
    <input type="text" name="username"><br/>
    上传文件:<input type="file" name="myFile"><br/>
    <input type="submit" value="上传">
</form>

(2)处理上传请求

<?php
$username = $_POST['username'];
$myFile = $_POST['myFile'];

//上传文件大小限制
if($_FILES['myFile']['size'] > 2 * 1024 * 1024){
    echo '上传的文件不能大于2M!';
    exit();
}
//上传文件格式限制
if($_FILES['myFile']['type'] != 'image/jpg' && $_FILES['myFile']['type'] != 'image/jpeg'){
    echo'上传的文件只能是jpg格式!';
    exit();
}

$fileTmp = $_FILES['myFile']['tmp_name'];
if(is_uploaded_file($fileTmp)){
    $fileNew = $_SERVER['DOCUMENT_ROOT'].$username;
    if(!file_exists($fileNew)){  //每个用户上传文件有一个专门文件夹
        mkdir($fileNew);
    }
    //防止上传同名文件,将上传文件改名字,修改后time()+rand(1,1000)+.原文件后缀名
    $fileLast = substr($_FILES['myFile']['name'],strrpos($_FILES['myFile']['name'],"."));
    $fileNew = $fileNew."/".time().rand(1,1000).$fileLast;

    if(move_uploaded_file($fileTmp,iconv('utf-8','GB212',$fileNew))){
        echo '上传成功!';
    }else{
        echo '文件从临时目录转移到新目录失败!';
    }
}else{
    echo '文件没有上传!';
}

  

原文地址:https://www.cnblogs.com/usa007lhy/p/5729803.html