首頁  >  文章  >  php教程  >  php學習筆記:檔案的上傳(包含設定檔的上傳大小限制)

php學習筆記:檔案的上傳(包含設定檔的上傳大小限制)

WBOY
WBOY原創
2016-09-12 17:27:311103瀏覽

今天寫的是文件上傳,前幾天自學的正規則又忘了,用了很笨的方法去判斷格式,直接上代碼:

<?<span style="color: #000000;">php
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*
 * Created by PhpStorm.
 * User: Administrator
 * Date: 16-9-12
 * Time: 上午10:01
 *
 * 文件上传
 *
 </span><span style="color: #008000;">*/</span>




?>


    <form action="upload.php" method="post" enctype="multipart/form-data"><span style="color: #000000;">
        上传文件:</span><input type="file" name="file" id="file">
        <br/>
        <input type="submit" name="subbtn" value="上传">
    </form>


<?<span style="color: #000000;">php

</span><span style="color: #0000ff;">if</span>(<span style="color: #0000ff;">isset</span>(<span style="color: #800080;">$_POST</span>['subbtn'<span style="color: #000000;">])){

    </span><span style="color: #0000ff;">echo</span> <span style="color: #800080;">$_FILES</span>['file']['type']."<br/>"<span style="color: #000000;">;

    </span><span style="color: #008000;">/*</span><span style="color: #008000;">
     * JPG image/jpeg
     * GIF image/gif
     * PNG image/png
     *
     </span><span style="color: #008000;">*/</span>



    <span style="color: #008000;">//</span><span style="color: #008000;">文件上传处理程序:
    //$_FILES['file']['type']  上传文件的类型
    //$_FILES['file']['size']  上传文件的大小

    //$_FILES['file']['error']  上传错误代码
    //$_FILES['file']['name']   上传文件名

    //$_FILES['file']['tmp_name'] 临时文件名
//$fileName="a.TXT";
//$pos = strrpos($fileName,".");
//$ext = strtolower(substr($fileName,$pos));
//</span>

    <span style="color: #800080;">$file</span> = <span style="color: #800080;">$_FILES</span>['file'<span style="color: #000000;">];
    </span><span style="color: #800080;">$fileName</span>=<span style="color: #800080;">$file</span>['name'<span style="color: #000000;">];
    </span><span style="color: #0000ff;">echo</span> '后缀切割前:'.  <span style="color: #800080;">$file</span>['name']."<br/>"<span style="color: #000000;">;
    </span><span style="color: #008000;">//</span><span style="color: #008000;">确定最后一个.出现的位置</span>
    <span style="color: #800080;">$pos</span> = <span style="color: #008080;">strrpos</span>(<span style="color: #800080;">$file</span>['name'],'.'<span style="color: #000000;">);
    </span><span style="color: #008000;">//</span><span style="color: #008000;">转换文件名为小写</span>
    <span style="color: #800080;">$ext</span> = <span style="color: #008080;">strtolower</span>(" <span style="color: #800080;">$fileName</span>"<span style="color: #000000;">);
    </span><span style="color: #008000;">//</span><span style="color: #008000;">提取文件名后缀</span>
    <span style="color: #800080;">$fileExten</span>=<span style="color: #008080;">substr</span>(<span style="color: #800080;">$ext</span>,<span style="color: #800080;">$pos</span>+2<span style="color: #000000;">);

    </span><span style="color: #008000;">//</span><span style="color: #008000;">判断文件后缀时候符合特定要求,这里设置为:jpg jpeg doc</span>
    <span style="color: #0000ff;">if</span>(<span style="color: #800080;">$fileExten</span>=='jpg'||<span style="color: #800080;">$fileExten</span>=='jpeg'||<span style="color: #800080;">$fileExten</span>=='doc'<span style="color: #000000;"> ){

        </span><span style="color: #0000ff;">echo</span> "文件后缀:". <span style="color: #800080;">$fileExten</span>. "<br/>"<span style="color: #000000;">;
        </span><span style="color: #0000ff;">echo</span> "文件类型:". <span style="color: #800080;">$file</span>['type']."<br/>"<span style="color: #000000;">;
        </span><span style="color: #0000ff;">echo</span> "文件大小:". <span style="color: #800080;">$file</span>['size']."<br/>"<span style="color: #000000;">;
        </span><span style="color: #0000ff;">echo</span> "错误代码:". <span style="color: #800080;">$file</span>['error']."<br/>"<span style="color: #000000;">;
        </span><span style="color: #0000ff;">echo</span> "文件名:". <span style="color: #800080;">$file</span>['name']."<br/>"<span style="color: #000000;">;
        </span><span style="color: #0000ff;">echo</span> "临时文件名:". <span style="color: #800080;">$file</span>['tmp_name']."<br/>"<span style="color: #000000;">;

        </span><span style="color: #008080;">move_uploaded_file</span>(<span style="color: #800080;">$file</span>['tmp_name'], "files/".<span style="color: #800080;">$file</span>['name'<span style="color: #000000;">]);

    }</span><span style="color: #0000ff;">else</span>
        <span style="color: #0000ff;">echo</span> "文件格式不对"<span style="color: #000000;">;
}

</span>?>

 

 格式不對的,直接被攔截。

如果要修改上傳的檔案大小限制,可以參考下面的做法:

1. 一般的檔案上傳,除非檔案很小.就像一個5M的檔案,很可能要超過一分鐘才能上傳完.
但在php中,預設的該頁最久執行時間為30 秒.就是說超過30秒,該腳本就停止執行.
這就導致出現無法打開網頁的情況.這時我們可以修改max_execution_time
在php.ini裡查找
max_execution_time
預設是30秒.改為
max_execution_time = 00%表示沒有限制
2. 修改post_max_size 設定POST 資料所允許的最大大小。此設定也影響到文件上傳。
php預設的post_max_size 為2M.如果POST 資料尺寸大於post_max_size $_POST 和$_FILES superglobals 便會為空.
查找post_max_size .改為
post_max_size = 150M
3. 很多人會重新上傳了第二步。時最大仍為8M.
為什麼呢.我們還要改一個參數upload_max_filesize 表示所上傳的檔案的最大大小。
查找upload_max_filesize,預設8M改為
upload_max_filesize = 100M
另外要說明的是,post_max_size 大於 upload_max_filesize 為佳.

🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn