Maison php教程 php手册 PHP单文件上传原理及上传函数的封装

PHP单文件上传原理及上传函数的封装

Jun 21, 2016 am 08:46 AM
break case fileinfo

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

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

<!--?php

//单文件上传函数的封装

//文件上传原理:将客户端的文件上传到服务器端,再将服务器端的临时文件移动到指定目录即可。

//文件的方向:客户端——-->服务器(临时文件)&mdash;&mdash;>指定目录,当文件进入服务器时它就是临时文件了,这时操作中要用临时文件的名称tmp_name。

//在客户端设置上传文件的限制(文件类型和大小)是不安全的,因为客户能通过源代码修改限制,所以在服务端这里设置限制。

//设置编码为UTF-8,以避免中文乱码

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

//通过$_FILES接收上传文件的信息

$fileInfo = $_FILES[&#39;myFile&#39;];

function uploadFile($fileInfo,$uploadPath=&#39;uploads&#39;,$flag=true,$allowExt=array(&#39;jpeg&#39;,&#39;jpg&#39;,&#39;png&#39;,&#39;gif&#39;),$maxSize = 2097152){

//判断错误号,只有为0或者是UPLOAD_ERR_OK,没有错误发生,上传成功

    if($fileInfo[&#39;error&#39;]>0){

        //注意!错误信息没有5

        switch($fileInfo[&#39;error&#39;]){

            case 1:

                $mes= &#39;上传文件超过了PHP配置文件中upload_max_filesize选项的值&#39;;

                break;

            case 2:

                $mes= &#39;超过了HTML表单MAX_FILE_SIZE限制的大小&#39;;

                break;

            case 3:

                $mes= &#39;文件部分被上传&#39;;

                break;

            case 4:

                $mes= &#39;没有选择上传文件&#39;;

                break;

            case 6:

                $mes= &#39;没有找到临时目录&#39;;

                break;

            case 7:

                $mes= &#39;文件写入失败&#39;;

                break;

            case 8:

                $mes= &#39;上传的文件被PHP扩展程序中断&#39;;

                break;

                 

        }  

        exit($mes);

    }

    $ext=pathinfo($fileInfo[&#39;name&#39;],PATHINFO_EXTENSION);

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

     

    //检测上传文件的类型

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

        exit(&#39;非法文件类型&#39;);

    }

     

    //检测上传文的件大小是否符合规范

    //$maxSize = 2097152;//2M

    if($fileInfo[&#39;size&#39;]>$maxSize){

        exit(&#39;上传文件过大&#39;);

    }

     

    //检测图片是否为真实的图片类型

    //$flag=true;

    if($flag){

        if(!getimagesize($fileInfo[&#39;tmp_name&#39;])){

            exit(&#39;不是真实的图片类型&#39;); 

        }  

    }

     

    //检测是否是通过HTTP POST方式上传上来

    if(!is_uploaded_file($fileInfo[&#39;tmp_name&#39;])){

        exit(&#39;文件不是通过HTTP POST方式上传上来的&#39;);

    }

     

    //$uploadPath=&#39;uploads&#39;;

    //如果没有这个文件夹,那么就创建一个

    if(!file_exists($uploadPath)){

        mkdir( $uploadPath, 0777, true);

        chmod( $uploadPath, 0777 );

    }

    //新文件名唯一

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

    $destination = $uploadPath.&#39;/&#39;.$uniName;

    //@符号是为了不让客户看到错误信息

    if(! @move_uploaded_file($fileInfo[&#39;tmp_name&#39;], $destination )){

        exit(&#39;文件移动失败&#39;);

    }

     

    //echo &#39;文件上传成功&#39;;

    //return array(

    //  &#39;newName&#39;=>$destination,

    //  &#39;size&#39;=>$fileInfo[&#39;size&#39;],

    //  &#39;type&#39;=>$fileInfo[&#39;type&#39;]

    //);

    return $destination;

}

?>

Copier après la connexion



Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

HMD Skyline obtient une nouvelle option de couleur et un boîtier magnétique officiel HMD Skyline obtient une nouvelle option de couleur et un boîtier magnétique officiel Aug 23, 2024 am 07:04 AM

Lorsque le HMD Skyline (disponible sur Amazon au prix de 499 $) a été lancé le mois dernier, il est sorti en deux couleurs : Neon Pink et Twisted Black. Ils sont désormais rejoints par une troisième couleur baptisée Blue Topaz. HMD Global a également annoncé un dossier officiel en faveur du ph

variable de jugement de cas de changement variable de jugement de cas de changement Feb 19, 2024 am 08:04 AM

Switchcase nécessite des exemples de code spécifiques pour déterminer les variables. En programmation, nous devons souvent effectuer différentes opérations basées sur différentes valeurs de variables. L'instruction switchcase est une structure pratique qui vous permet de sélectionner différents blocs de code à exécuter en fonction de la valeur d'une variable. Ce qui suit est un exemple de code spécifique qui montre comment utiliser l'instruction switchcase pour déterminer différentes valeurs de variables : #includeintmain(){

Comment installer l'extension php fileinfo Comment installer l'extension php fileinfo Sep 12, 2021 am 11:36 AM

Comment installer l'extension php fileinfo : 1. Recherchez le répertoire source d'installation de PHP ; 2. Analysez et utilisez phpize pour libérer le module fileinfo ; 3. Compilez et installez ;

Parlons de ne pas utiliser break dans l'instruction PHP switch Parlons de ne pas utiliser break dans l'instruction PHP switch Mar 20, 2023 pm 04:55 PM

Il est très courant d'utiliser des instructions switch en PHP pour sélectionner plusieurs branches. Habituellement, une instruction break est utilisée pour quitter l'instruction switch après chaque branche. Cependant, il existe des situations dans lesquelles nous ne souhaitons pas utiliser l'instruction break. Cet article présentera la situation de non-utilisation de break dans l'instruction switch PHP.

À quoi sert l'instruction break stop en langage Go ? À quoi sert l'instruction break stop en langage Go ? Jan 18, 2023 pm 03:46 PM

Dans le langage Go, l'instruction break stop est utilisée pour sortir de la boucle dans une instruction en boucle et commencer à exécuter l'instruction après la boucle. L'instruction break peut terminer les blocs de code de for, switch et select. De plus, l'instruction break peut également ajouter une étiquette après l'instruction pour indiquer la sortie du bloc de code correspondant à une certaine étiquette. bloc de code de for, switch et select.

A quoi sert break en php A quoi sert break en php Jan 31, 2023 pm 07:33 PM

En PHP, break est utilisé pour sortir de la structure syntaxique actuelle et exécuter l'instruction suivante ; il peut être utilisé dans des instructions telles que switch, for, while et do while. Il peut terminer le code du corps de la boucle et en sortir. de la boucle actuelle immédiatement et exécutez les instructions suivantes après le code de la boucle. L'instruction break peut prendre un paramètre n, indiquant le nombre de niveaux à sortir de la boucle. Si vous souhaitez sortir de plusieurs boucles, vous pouvez utiliser n pour indiquer le nombre de niveaux à quitter. paramètre, la valeur par défaut est de sortir de la boucle actuelle.

Apprentissage en boucle JS : les instructions de sortie de boucle s'interrompent et continuent Apprentissage en boucle JS : les instructions de sortie de boucle s'interrompent et continuent Aug 03, 2022 pm 07:08 PM

Dans l'article précédent, nous vous avons amené à apprendre plusieurs structures de contrôle de boucle en JS (boucles while et do-while, boucles for). Parlons des instructions break et continue pour sortir de la boucle. tout le monde!

Comment éliminer le switch-case dans Springboot Comment éliminer le switch-case dans Springboot May 14, 2023 pm 07:49 PM

Description du produit :Stringevent=crsRequest.getEvent();CRSResponsecrsResponse=null;switch(event){caseCRSRequestEvent.APP_START:crsResponse=processAppStartCommand(crsRequest);break;caseCRSRequestEvent.INIT_COMPLETE:crsResponse=processInitCompleteCommand( crsDemande)

See all articles