php_文件操作

来源:互联网 发布:网络杀机 百度云 编辑:程序博客网 时间:2024/05/22 11:47
一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定文件接收方将以什么形式、什么编码读取这个文件form的enctype属性为编码方式,常用有两种:1.(没有type=file的控件)application/x-www-form-urlencoded:默认2.(有type=file的控件)multipart/form-data:提交图片视频文件的编码格式,使用key/value标准格式

1.打开文件

<?php    header("content-type:text/html;charset=utf-8");    //1.打开文本流    $file = fopen("1.txt", "a+");    $str = fread($file, filesize("1.txt"));//读取一个文件,参数2 :读多长个字符    //filesize()  获取文件长度    echo $str;    fwrite($file, "hello world");//写  a+    //判断文件是否存在    if(is_file("12.txt")){        echo "yes";    }else{        echo "no";        $file = fopen("12.txt", "a");        fwrite($file, "hello world");//写    }    //文件/文件夹->权限问题    //user  (正常在本地操作)    //group (软件操作文件)    //other ()?>

2.给予权限

<?php    $old = umask(0);    //umask(0) 在创建新文件或目录时 屏蔽掉新文件或目录不应有的访问允许权限    $file = fopen("3.txt", "w");    fwrite($file, "");    //给予权限    umask($old);    //开启权限    //chmod("2.txt", 0777);    //  4 2 1    //  r w x    //  777 每一位代表的是  不同用户的操作权限    // user group other    // rwxrwxrwx    // r----wrw-?>

3.读写

<?php    header("content-type:text/html;charset=utf-8");    $data = "我就要往里写";    //利用user的权限,直接覆盖操作文件    file_put_contents("3.txt", $data);    //读取一个任意文件    //echo file_get_contents("http://www.baidu.com/s?wd=王");    echo file_get_contents("3.txt");?>

4.序列化与反序列化

<?php       header("content-type:text/html;charset=utf-8");    echo "<pre/>";    $str =  file_get_contents("jsonURL.json");    //反序列化  json_decode,一定格式的字符串转化为array / object    $jsonArr = json_decode($str);//返回对象    print_r($jsonArr);    print_r($jsonArr->head);    echo "<br/>";    $jsonArr = json_decode($str,true);//返回关联数组    print_r($jsonArr);    echo $jsonArr['law'];    echo "<br/>";    //序列化 json_encode  把array / object序列化成一定格式的字符串    //重点:PHP向前端返回数组的时候,要返回的是序列化后的字符串给前端使用    $eStr = json_encode($jsonArr);    print_r($eStr);?>

5.文件复制重命名_删除

<?php    //复制 true成功    //参1:源文件    //参2:复制为哪个文件    //注:放的是文件路径    //echo copy("jsonURL.json", "2.json");    //重命名    //$a = rename("2.json", "5.json");    //删除    //echo unlink("5.json");?>

6.文件夹操作

<?php    //1.新建文件夹    //echo mkdir("2b");    //chmod("2b",0777);    //删除文件夹    $arr = scandir("2b");//扫描文件夹内的内容    foreach($arr as $v){        if($v != "." && $v != ".."){            unlink("2b/".$v);        }        echo $v;    }    echo rmdir("2b");//无法恢复    //判断一个路径是否为文件夹    if(is_dir("../06")){        echo "yes";    }else{        echo "no";    }?>

7.form表单提交:上传图片

<body><!--    表单中enctype="multipart/form-data"的意思,    是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,    不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据--><form action="09php_perfect_pic.php" method="post" enctype="multipart/form-data">    <input type="file" name="myFile" id="" value="" />    <input type="submit" value="提交文件"/></form></body>----------------------------------------------------------normal版本<?php    //$_GET    //$_POST    //$_FILES  保存的是接收到的文件信息    header("content-type:text/html;charset=utf-8");    var_dump($_FILES);    $arr = $_FILES["myFile"];//(Key前台约定的)    $oldPosition = $arr["tmp_name"];    //移动(前端传递的文件,实在缓存里,自己移动到只定位置)    $content = iconv("GBK", "UTF-8", $content);    echo move_uploaded_file($oldPosition, $arr["name"]);    //$_FILES["myFile"]["name"] 前端上传的文件的文件名    //$_FILES["myFile"]["type"] 前端上传的文件的文件类型        //image/jpg,image/jpeg,image/png,image/pjpeg,image/gif,bmp,image/x-png,text/php    //$_FILES["myFile"]["tmp_name"] 前端上传的文件的文件类型    //$_FILES["myFile"]["error"] 错误信息        //0:文件上传成功        //1:超过文件大小限制(默认php.ini,2MB)        //2:超过文件大小MAX_FILE_SIZE 选项规定的值        //3:文件☞传了一部分        //4:文件没有被上传        //5:文件上传大小为0    //$_FILES["myFile"]["size"] 文件大小?>--------------------------------------------------------super版本<?php    header("content-type:text/html;charset=utf-8");    //判断缓存里的文件是否上传完毕    if(is_uploaded_file($_FILES["myFile"]["tmp_name"])){        $upFileArr = $_FILES["myFile"];        $name = $upFileArr["name"];        $type = $upFileArr["type"];        $size = $upFileArr["size"];        $tmp_name = $upFileArr["tmp_name"];        $err = $upFileArr["error"];        $isOk = 0;//保存此次判断结果( 0非法  1 合法)        switch($type){            case "image/jpeg":$isOk = 1;                break;            case "image/png":$isOk = 1;                break;            case "image/jpg":$isOk = 1;                break;            case "image/gif":$isOk = 1;                break;            default:        }        if(1 == $isOk && 0 == $err){            if(!is_dir("up")){                mkdir("up");                chmod("up", 0777);            }            $mResult = move_uploaded_file($tmp_name, "up/".iconv("UTF-8", "gbk",$name));//将字符串的编码从UTF-8 转到gbk            if($mResult == true){                echo "文件上传成功";            }        }else{                echo "请检查文件类型";        }       }?>

8.ajax上传文件(单个)

<body><input type="file" name="upload_file" id="upload_file" multiple="multiple" /><script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script><script type="text/javascript">    document.getElementById("upload_file").addEventListener("change",function(){        //console.log(this.files);        console.log(this.files["length"]);            var file = this.files[0];            var reader = new FileReader();            reader.readAsDataURL(file);            reader.onload = function(ev){                var base64Str = ev.target.result;                var name = file["name"]                arr = base64Str.split(",")["1"];                $.ajax({                    type:"post",                    url:"08php_accept_ajax_up_pic.php",                    data:{                        base64Str:arr,                        name : name                    },                    success:function(res){                        alert(res);                    }                });            }    });</script></body>-----------------------------------------------------------<?php    //首先 前端利用Ajia上传图片的时候,    //没法直接上传整个文件,    //我们需要把图片转成Base64编码,发给后台    //后台收到编码,进行解码得到图片    //建议:post提交     因为get长度有限制    header("content-type:text/html;charset=utf-8");    $base64Str = $_POST["base64Str"];    $name = $_POST["name"];    //反序列化 将图片解析成base64图片    $img = base64_decode($base64Str);//  $name = md5(trim(microtime())).$name;    $result = file_put_contents("up/".iconv("UTF-8", "gbk",$name), $img);//时间戳作为图片名    if($result){        echo "上传成功";    }else{        echo "上传失败";    }?>
原创粉丝点击