>php教程 >php手册 >PHP 연구 노트: 파일 업로드(파일 업로드 크기 제한 설정 포함)

PHP 연구 노트: 파일 업로드(파일 업로드 크기 제한 설정 포함)

WBOY
WBOY원래의
2016-09-12 17:27:311181검색

오늘 쓴 글은 파일 업로드에 관한 내용인데 며칠 전에 배운 올바른 규칙을 잊어버려서 형식을 판단하기 위해 아주 멍청한 방법을 사용하고 코드를 직접 입력했습니다.

<?<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 파일처럼 아주 작은 파일이 아닌 이상 업로드하는데 1분 이상 걸릴 수 있습니다.
그러나 PHP에서는 이 페이지의 기본 최대 실행 시간이 30초입니다. 즉, 30초를 초과하면 스크립트 실행이 중지됩니다.
이로 인해 웹페이지를 열 수 없게 됩니다. 이때 max_execution_time
을 수정하고
max_execution_time을 검색하면 됩니다.
php.ini에서는 기본적으로 30초입니다.
max_execution_time = 0
0은 제한이 없음을 의미합니다
. post_max_size를 수정하여 POST 데이터에 허용되는 최대 크기를 설정합니다. 이 설정은 파일 업로드에도 영향을 미칩니다.
PHP의 기본 post_max_size는 2M입니다. POST 데이터 크기가 post_max_size보다 크면 $_POST 및 $_FILES 슈퍼 전역이 비어 있게 됩니다.
post_max_size를
post_max_size = 150M
으로 변경하세요. 3. 많은 사람들이 변경합니다. Step 2. 하지만 파일 업로드 시 최대 크기는 여전히 8M입니다.
업로드되는 파일의 최대 크기를 나타내기 위해 upload_max_filesize 매개변수도 변경해야 합니다.
upload_max_filesize를 찾아 기본값은 8M이고
upload_max_filesize = 100M
으로 변경합니다. 또한 post_max_size가 upload_max_filesize보다 크다는 점에 유의하세요.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.