Home Backend Development PHP Tutorial Detailed explanation of PHP file upload class examples_php skills

Detailed explanation of PHP file upload class examples_php skills

May 16, 2016 pm 07:54 PM
php

本文实例讲述了PHP文件上传类。分享给大家供大家参考,具体如下:

这里演示了FileUpload.class.php文件上传类,其中用到了两个常量,可在网站配置文件中定义:

1

2

define('ROOT_PATH',dirname(__FILE__)); //网站根目录

define('UPDIR','/uploads/'); //上传主目录

Copy after login

具体代码如下:

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

90

91

92

93

94

95

96

<&#63;php

  //上传文件类

  class FileUpload {

    private $error//错误代码

    private $maxsize; //表单最大值

    private $type//类型

    private $typeArr = array('image/jpeg','image/pjpeg','image/png','image/x-png','image/gif'); //类型合集

    private $path//目录路径

    private $today//今天目录

    private $name//文件名

    private $tmp//临时文件

    private $linkpath; //链接路径

    private $linktotay; //今天目录(相对)

    //构造方法,初始化

    public function __construct($_file,$_maxsize) {

       $this->error = $_FILES[$_file]['error'];

       $this->maxsize = $_maxsize / 1024;

       $this->type = $_FILES[$_file]['type'];

       $this->path = ROOT_PATH.UPDIR;

       $this->linktotay = date('Ymd').'/';

       $this->today = $this->path.$this->linktotay;

       $this->name = $_FILES[$_file]['name'];

       $this->tmp = $_FILES[$_file]['tmp_name'];

       $this->checkError();

       $this->checkType();

       $this->checkPath();

       $this->moveUpload();

    }

    //返回路径

    public function getPath() {

       $_path = $_SERVER["SCRIPT_NAME"];

       $_dir = dirname(dirname($_path));

       if ($_dir == '\\') $_dir = '/';

       $this->linkpath = $_dir.$this->linkpath;

       return $this->linkpath;

    }

    //移动文件

    private function moveUpload() {

       if (is_uploaded_file($this->tmp)) {

         if (!move_uploaded_file($this->tmp,$this->setNewName())) {

            Tool::alertBack('警告:上传失败!');

         }

       } else {

         Tool::alertBack('警告:临时文件不存在!');

       }

    }

    //设置新文件名

    private function setNewName() {

       $_nameArr = explode('.',$this->name);

       $_postfix = $_nameArr[count($_nameArr)-1];

       $_newname = date('YmdHis').mt_rand(100,1000).'.'.$_postfix;

       $this->linkpath = UPDIR.$this->linktotay.$_newname;

       return $this->today.$_newname;

    }

    //验证目录

    private function checkPath() {

       if (!is_dir($this->path) || !is_writeable($this->path)) {

         if (!mkdir($this->path)) {

            Tool::alertBack('警告:主目录创建失败!');

         }

       }

       if (!is_dir($this->today) || !is_writeable($this->today)) {

         if (!mkdir($this->today)) {

            Tool::alertBack('警告:子目录创建失败!');

         }

       }

    }

    //验证类型

    private function checkType() {

       if (!in_array($this->type,$this->typeArr)) {

         Tool::alertBack('警告:不合法的上传类型!');

       }

    }

    //验证错误

    private function checkError() {

       if (!empty($this->error)) {

         switch ($this->error) {

            case 1 :

              Tool::alertBack('警告:上传值超过了约定最大值!');

              break;

            case 2 :

              Tool::alertBack('警告:上传值超过了'.$this->maxsize.'KB!');

              break;

            case 3 :

              Tool::alertBack('警告:只有部分文件被上传!');

              break;

            case 4 :

              Tool::alertBack('警告:没有任何文件被上传!');

              break;

            default:

              Tool::alertBack('警告:未知错误!');

         }

       }

    }

  }

&#63;>

Copy after login

其中,用到了一个静态工具类 Tool.class.php,代码如下:

Tool.class.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<&#63;php

  class Tool {

     //弹窗返回

     static public function alertBack($_info) {

       echo "<script type='text/javascript'>alert('$_info');history.back();</script>";

       exit();

     }     //弹窗赋值关闭

     static public function alertOpenerClose($_info,$_path) {

       echo "<script type='text/javascript'>alert('$_info');</script>";

       echo "<script type='text/javascript'>opener.document.content.thumbnail.value='$_path';</script>";

       echo "<script type='text/javascript'>opener.document.content.pic.style.display='block';</script>";

       echo "<script type='text/javascript'>opener.document.content.pic.src='$_path';</script>";

       echo "<script type='text/javascript'>window.close();</script>";

       exit();

     } }

&#63;>

Copy after login

下面进行一个实例演示,请看下面的步骤:

1、先创建一个 index.php 页面,做一个表单

index.php

1

2

3

4

5

6

7

8

9

10

11

12

13

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

  <head>

     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

     <title>main</title>

  </head>

  <body>

     <form name="content" method="post" action="&#63;action=add">

     <input type="text" name="thumbnail" class="text" readonly="readonly" /> <input type="button" value="上传" onclick="centerWindow('./upfile.html','upfile','400','100')" /> <img name="pic" style="display:none;" /> ( * 必须是jpg,gif,png,并且200k内) <br />

     </form>

  </body>

</html>

Copy after login

2、创建 upfile.html 文件,建立表单提交到 upload.php

upfile.html

1

2

3

4

5

6

7

8

9

10

11

12

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

  <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>上传图片</title>

  </head>

  <body></p><p>   <form method="post" action="./upload.php" enctype="multipart/form-data" style="text-align:center;margin:30px;">

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

    <input type="file" name="pic" />

    <input type="submit" name="send" value="确定上传" />

</form></p><p></body>

</html>

Copy after login

3、通过 upload.php 文件调用文件上传类实现上传,并且把路径赋给 input 标签和显示图片

1

2

3

4

5

6

7

8

9

10

<&#63;php

  require 'FileUpload.class.php';

  if (isset($_POST['send'])) {

    $_fileupload = new FileUpload('pic',$_POST['MAX_FILE_SIZE']);

    $_path = $_fileupload->getPath();

    Tool::alertOpenerClose('文件上传成功!',$_path);

  } else {

    Tool::alertBack('警告:文件过大或者其他未知错误导致浏览器崩溃!');

  }

&#63;>

Copy after login

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php文件操作总结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1666
14
PHP Tutorial
1273
29
C# Tutorial
1253
24
PHP and Python: Comparing Two Popular Programming Languages PHP and Python: Comparing Two Popular Programming Languages Apr 14, 2025 am 12:13 AM

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

PHP: A Key Language for Web Development PHP: A Key Language for Web Development Apr 13, 2025 am 12:08 AM

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

PHP in Action: Real-World Examples and Applications PHP in Action: Real-World Examples and Applications Apr 14, 2025 am 12:19 AM

PHP is widely used in e-commerce, content management systems and API development. 1) E-commerce: used for shopping cart function and payment processing. 2) Content management system: used for dynamic content generation and user management. 3) API development: used for RESTful API development and API security. Through performance optimization and best practices, the efficiency and maintainability of PHP applications are improved.

PHP vs. Python: Understanding the Differences PHP vs. Python: Understanding the Differences Apr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHP is suitable for web development, with simple syntax and high execution efficiency. 2. Python is suitable for data science and machine learning, with concise syntax and rich libraries.

The Enduring Relevance of PHP: Is It Still Alive? The Enduring Relevance of PHP: Is It Still Alive? Apr 14, 2025 am 12:12 AM

PHP is still dynamic and still occupies an important position in the field of modern programming. 1) PHP's simplicity and powerful community support make it widely used in web development; 2) Its flexibility and stability make it outstanding in handling web forms, database operations and file processing; 3) PHP is constantly evolving and optimizing, suitable for beginners and experienced developers.

PHP and Python: Code Examples and Comparison PHP and Python: Code Examples and Comparison Apr 15, 2025 am 12:07 AM

PHP and Python have their own advantages and disadvantages, and the choice depends on project needs and personal preferences. 1.PHP is suitable for rapid development and maintenance of large-scale web applications. 2. Python dominates the field of data science and machine learning.

PHP vs. Other Languages: A Comparison PHP vs. Other Languages: A Comparison Apr 13, 2025 am 12:19 AM

PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.

PHP and Python: Different Paradigms Explained PHP and Python: Different Paradigms Explained Apr 18, 2025 am 12:26 AM

PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

See all articles