> 백엔드 개발 > PHP 튜토리얼 > PHP 파일 업로드 관련 제한 사항

PHP 파일 업로드 관련 제한 사항

伊谢尔伦
풀어 주다: 2023-03-11 16:30:02
원래의
1835명이 탐색했습니다.

업로드 관련 제한

1 클라이언트 제한

1

2

3

4

5

6

<form action="doAction2.php" method="post" enctype="multipart/form-data">

<input type="hidden" name="MAX_FILE_SIZE" value="101321" />

请选择您要上传的文件:

<input type="file" name="myFile" accept="image/jpeg,image/gif,text/html"/><br/>

<input type="submit" value="上传"/>

</form>

로그인 후 복사

입력 속성은 업로드되는 파일의 크기와 유형을 제한하는 데 사용되지만 개인적인 느낌은 다음과 같습니다. 첫째, html 코드는 "표시"되고, 둘째, 그렇지 않은 경우가 많습니다. 일( 이유는 못 찾았는데 첫 번째 때문에 포기하고 싶었어요. 알아두면 좋아요.

2 서버 측 제한 사항

주요 제한 사항은 크기와 종류이며, 나머지는

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

<?php

header(&#39;content-type:text/html;charset=utf-8&#39;);

//接受文件,临时文件信息

$fileinfo=$_FILES["myFile"];//降维操作

$filename=$fileinfo["name"];

$tmp_name=$fileinfo["tmp_name"];

$size=$fileinfo["size"];

$error=$fileinfo["error"];

$type=$fileinfo["type"];

//服务器端设定限制

$maxsize=10485760;//10M,10*1024*1024

$allowExt=array(&#39;jpeg&#39;,&#39;jpg&#39;,&#39;png&#39;,&#39;tif&#39;);//允许上传的文件类型(拓展名

$ext=pathinfo($filename,PATHINFO_EXTENSION);//提取上传文件的拓展名

//目的信息

$path="uploads";

if (!file_exists($path)) {   //当目录不存在,就创建目录

    mkdir($path,0777,true);

    chmod($path, 0777);

}

//$destination=$path."/".$filename;

//得到唯一的文件名!防止因为文件名相同而产生覆盖

$uniName=md5(uniqid(microtime(true),true)).$ext;//md5加密,uniqid产生唯一id,microtime做前缀

if ($error==0) {

    if ($size>$maxsize) {

        exit("上传文件过大!");

    }

    if (!in_array($ext, $allowExt)) {

        exit("非法文件类型");

    }

    if (!is_uploaded_file($tmp_name)) {

        exit("上传方式有误,请使用post方式");

    }

    if (@move_uploaded_file($tmp_name, $uniName)) {//@错误抑制符,不让用户看到警告

        echo "文件".$filename."上传成功!";

    }else{

        echo "文件".$filename."上传失败!";

    }

    //判断是否为真实图片(防止伪装成图片的病毒一类的

    if (!getimagesize($tmp_name)) {//getimagesize真实返回数组,否则返回false

        exit("不是真正的图片类型");

    }

}else{

    switch ($error){

        case 1:

            echo "超过了上传文件的最大值,请上传2M以下文件";

            break;

        case 2:

            echo "上传文件过多,请一次上传20个及以下文件!";

            break;

        case 3:

            echo "文件并未完全上传,请再次尝试!";

            break;

        case 4:

            echo "未选择上传文件!";

            break;

        case 7:

            echo "没有临时文件夹";

            break;

    }

}

로그인 후 복사

메서드에는 특정 구현에 대한 설명이 있습니다. 실제로 모든 단계를 직접 시도해 볼 수 있습니다. 매우 흥미롭습니다.

3

함수

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

<?php

function uploadFile($fileInfo,$path,$allowExt,$maxSize){

$filename=$fileInfo["name"];

$tmp_name=$fileInfo["tmp_name"];

$size=$fileInfo["size"];

$error=$fileInfo["error"];

$type=$fileInfo["type"];

//服务器端设定限制

$ext=pathinfo($filename,PATHINFO_EXTENSION);

//目的信息

if (!file_exists($path)) {  

    mkdir($path,0777,true);

    chmod($path, 0777);

}

$uniName=md5(uniqid(microtime(true),true)).&#39;.&#39;.$ext;

$destination=$path."/".$uniName;

if ($error==0) {

    if ($size>$maxSize) {

        exit("上传文件过大!");

    }

    if (!in_array($ext, $allowExt)) {

        exit("非法文件类型");

    }

    if (!is_uploaded_file($tmp_name)) {

        exit("上传方式有误,请使用post方式");

    }

    //判断是否为真实图片(防止伪装成图片的病毒一类的

    if (!getimagesize($tmp_name)) {//getimagesize真实返回数组,否则返回false

        exit("不是真正的图片类型");

    }

    if (@move_uploaded_file($tmp_name, $destination)) {//@错误抑制符,不让用户看到警告

        echo "文件".$filename."上传成功!";

    }else{

        echo "文件".$filename."上传失败!";

    }

     

}else{

    switch ($error){

        case 1:

            echo "超过了上传文件的最大值,请上传2M以下文件";

            break;

        case 2:

            echo "上传文件过多,请一次上传20个及以下文件!";

            break;

        case 3:

            echo "文件并未完全上传,请再次尝试!";

            break;

        case 4:

            echo "未选择上传文件!";

            break;

        case 7:

            echo "没有临时文件夹";

            break;

    }

}

return $destination;

}

로그인 후 복사

를 캡슐화하고

1

2

3

4

5

6

7

8

<?php

header(&#39;content-type:text/html;charset=utf-8&#39;);

$fileInfo=$_FILES["myFile"];

$maxSize=10485760;//10M,10*1024*1024

$allowExt=array(&#39;jpeg&#39;,&#39;jpg&#39;,&#39;png&#39;,&#39;tif&#39;);

$path="uploads";

include_once &#39;upFunc.php&#39;;

uploadFile($fileInfo, $path, $allowExt, $maxSize);

로그인 후 복사
를 호출하세요.

위 내용은 PHP 파일 업로드 관련 제한 사항의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿