php面向对象文件上传

文件上传类 Upload.class.php

  1. <?php
  2. class Upload {
  3. private $path;
  4. private $n;
  5. private $ext;
  6. private $length;
  7. public function __construct($path = ‘./‘, $n = 3, $ext = [‘jpg‘,‘gif‘,‘png‘,‘rar‘,‘ppt‘,‘doc‘], $length = 20971520) {
  8. $this->path = $path;
  9. $this->n = $n;
  10. $this->ext = $ext;
  11. $this->length = $length;
  12. }
  13. public function up() {
  14. $ufs = $_FILES;
  15. if (count ( $ufs ) <= 0) {
  16. return;
  17. } else {
  18. if (! file_exists ( $this->path )) {
  19. mkdir ( $this->path, 0777, true );
  20. }
  21. $uuu = [ ];
  22. foreach ( $ufs as $k => $v ) {
  23. if (is_array ( $v [‘name‘] )) {
  24. $ns = $v [‘name‘];
  25. $fs = $v [‘tmp_name‘];
  26. $ss = $v [‘size‘];
  27. foreach ( $fs as $kk => $vv ) {
  28. if ($ss [$kk] == 0) {
  29. continue;
  30. }
  31. $uf = iconv ( ‘utf-8‘, ‘gbk‘, $ns [$kk] );
  32. $et = strtolower ( substr ( $uf, strrpos ( $uf, ‘.‘ ) + 1 ) );
  33. if ($this->n == 1) {
  34. $uf = uniqid () . ‘.‘ . $et;
  35. } else if ($this->n == 2) {
  36. $uf = $this->uuid () . ‘.‘ . $et;
  37. } else if ($this->n == 3) {
  38. $nnn = substr ( $uf, 0, strrpos ( $uf, ‘.‘ ) );
  39. $t = 0;
  40. while ( file_exists ( $this->path . $uf ) ) {
  41. $uf = $nnn . (++ $t) . ‘.‘ . $et;
  42. }
  43. }
  44. if (in_array ( $et, $this->ext ) && $ss [$kk] <= $this->length) {
  45. move_uploaded_file ( $vv, $this->path . $uf );
  46. $uuu [] = $uf;
  47. }
  48. }
  49. } else {
  50. if ($v [‘size‘] == 0) {
  51. continue;
  52. }
  53. $uf = iconv ( ‘utf-8‘, ‘gbk‘, $v [‘name‘] );
  54. $et = strtolower ( substr ( $uf, strrpos ( $uf, ‘.‘ ) + 1 ) );
  55. if ($this->n == 1) {
  56. $uf = uniqid () . ‘.‘ . $et;
  57. } else if ($this->n == 2) {
  58. $uf = $this->uuid () . ‘.‘ . $et;
  59. } else if ($this->n == 3) {
  60. $nnn = substr ( $uf, 0, strrpos ( $uf, ‘.‘ ) );
  61. $t = 0;
  62. while ( file_exists ( $this->path . $uf ) ) {
  63. $uf = $nnn . (++ $t) . ‘.‘ . $et;
  64. }
  65. }
  66. if (in_array ( $et, $this->ext ) && $v [‘size‘] <= $this->length) {
  67. move_uploaded_file ( $v [‘tmp_name‘], $this->path . $uf );
  68. $uuu [] = $uf;
  69. }
  70. }
  71. }
  72. return $uuu;
  73. }
  74. }
  75. public function uuid($namespace = ‘‘) {
  76. $guid = $namespace;
  77. $uid = uniqid ( "", true );
  78. $data = $namespace;
  79. $data .= $_SERVER [‘REQUEST_TIME‘];
  80. $data .= $_SERVER [‘HTTP_USER_AGENT‘];
  81. $data .= $_SERVER [‘REMOTE_ADDR‘];
  82. $data .= $_SERVER [‘REMOTE_PORT‘];
  83. $hash = strtoupper ( hash ( ‘ripemd128‘, $uid . $guid . md5 ( $data ) ) );
  84. $guid = substr ( $hash, 0, 8 ) . ‘-‘ . substr ( $hash, 8, 4 ) . ‘-‘ . substr ( $hash, 12, 4 ) . ‘-‘ . substr ( $hash, 16, 4 ) . ‘-‘ . substr ( $hash, 20, 12 );
  85. return $guid;
  86. }
  87. public function __destruct() {
  88. }
  89. }

上传单个文件或者多个文件的html代码  uup.html

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Insert title here</title>
  6. </head>
  7. <body>
  8. <form action="up.php" method="post" enctype="multipart/form-data">
  9. 文件上传:<input type="file" name="f[]" multiple><br><!-- 上传多个文件 -->
  10. <!-- 上传文件:<input type="file" name="f" ><br> 上传单个文件 -->
  11. <input type="submit" value="提交">
  12. </form>
  13. </body>
  14. </html>

引入类和实例化类的代码up.php

  1. <?php
  2. include ‘inc/Upload.class.php‘;
  3. $u=new Upload(‘abc/‘,1);
  4. $uf=$u->up();
  5. echo ‘<pre>‘;
  6. print_r($uf);

来自为知笔记(Wiz)

时间: 2024-10-05 19:52:56

php面向对象文件上传的相关文章

面向对象中的文件上传类

<?php /** *文件上传类 * **/ class Upload { //上传到哪个目录 protected $path = './upload/'; //准许的MIME protected $allowmime = ['image/png','image/jpg','image/jpeg','image/pjpeg','image/bmp','image/wbmp','image/gif','image/x-png']; //准许的后缀 protected $allowsubfix = 

文件上传与下载学习笔记(3)---面向对象方法实现文件上传

代码: 1 <?php 2 class uploadClass { 3 protected $filename; 4 protected $maxSize; 5 protected $allowExt; 6 protected $allowMime; 7 protected $uploadPath; 8 protected $imgFlag; 9 protected $fileInfo; 10 protected $error; 11 protected $ext; 12 protected $

面向对象---封装文件上传思路

<?php header("content-type:text/html;charset=utf8"); //获取数据信息 $data = $_FILES; //循环遍历的方式取到单个的数组 foreach ($data as $key=>$val){ $arr = $val; } //判断一下是不是有效的文件 if(!is_array($arr) || empty($arr)){ echo "无效的文件";die; } //获取后缀 if(!empty

文件上传更新服务相关

需求: 客户端向服务端发送一次请求,请求是一系列配置文件的文件名.当前客户端所持有文件的版本号.期待服务端返回的数据形式(url或二进制数据).当请求的配置文件有更新,服务端返回相应的url或二进制数据.之所以要分url和二进制数据,因为有的配置文件比较小且比较重要需要马上获取到数据:而有的配置文件稍微大一些,重要性比较低,可以在客户端拉线程慢慢下. 最终实现: 分为后台管理系统(负责文件上传)和数据更新服务. 文件上传部分是用Vue.js+KOA实现.其中关于文件上传那块,浏览器端使用Ajax

ueditor 文件上传的分析和总结

正式开始之前,先写两个常用又容易被我忘掉的文件和流相互转化的方法. 1,文件转流 FileStream fs = new FileStream(filename,FileMode.Open,FileAccess.Read); byte[] infbytes = new byte[(int)fs.Length]; fs.Read(infbytes, 0, infbytes.Length); fs.Close(); return infbytes; 2,流转文件 FileStream fs = ne

验证码确保php无输出、sql语句的封装性、文件上传的工具类【这三个重点工具类实现】

1.php代码在引入中不会进行结束或者确保结束之后没有空格,来保证php在被包含中没有被输出[防止header和session_start()对输出的控制]实质上,需要注意的就是,要不就进行输出缓存控制以及php开始标签前没有空格 验证码这个功能需要header和session两个功能[尤其需要注意输出的问题] [总结:防止php代码中带着一些输出的问题](1)在php标签中开始<?php 前顶格(2)php结束符要不不写,写了就不要在结束之后还有换行[防止该文件被包含之后提前出线输出](3)或

php面向对象式多文件上传

使用php 进行多文件的上传是学习php 必不可少的内容,因此我根据 慕课网上的教程改编了下,形成下面的代码,如若有什么问题,请指点指点我这个小菜鸟! upload.class.php: 面向对象的类文件的封装 <?php /** * Created in upload. * FileName: upload.class.php * User: fanfan * Date: 2015/7/30 * Time: 21:26 */ //多文件上传封装 class upload { //protect

文件上传的三种方式-Java

前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对 Http 协议较模糊,故这次采用渐进的方式来学习文件上传的原理与实践.该博客重在实践. 一.Http协议原理简介 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HT

文件上传的三种模式-Java

转载自: http://www.myexception.cn/web/1935104.html 文件上传的三种方式-Java 前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对 Http 协议较模糊,故这次采用渐进的方式来学习文件上传的原理与实践.该博客重在实践.   一. Http协议原理简介     HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经