PHP 上传文件类

<?php
/**
 *
 * @name upload.class.php
 * 上传文件类
 * @author Peter
 * @createtime 2014-11-20 10:30:29
 *
 */
class upload{

	public $max_size; //上传file大小

	public $allow_types; //上传文件类型

	public $file_name; //文件名

	public $errmsg; //错误提示

	public $uploaded; //后的文件名

	public $save_path; //上传文件保存路径

	private $file_type; //文件类型

	private $ext; //上传文件扩展名

	/*
	 * 构造函数
	 * @access public
	 * @string $save_path 上传目标文件
	 * @string $file_name 上传后的文件名
	 * @string $allow_types 允许上传的文件类型
	 * */

	function __construct($save_path = "./upload/",$file_name=‘date‘,$allow_types = ‘‘)
	{
		$this->file_name = $file_name;//默认用时间命名
		$this->save_path = (preg_match(‘/\/$/‘,$save_path))?$save_path:$save_path.‘/‘;
		$this->allow_types = $allow_types == ‘‘ ? ‘jpg|gif|png‘ : $allow_types;
		$this->max_size = 1024*1024*2;
	}

	/*
	 * 上传文件
	 * @access public
	 * @param $file 等待上传的文件
	 * @return Boolean
	 * */

	 public function upload_file($files)
	 {
	 	$info = $_FILES[$files];

		$name = $info[‘name‘];
		$type = $info[‘type‘];
		$tmp_name = $info[‘tmp_name‘];
		$error = $info[‘error‘];
		$size = $info[‘size‘];

		switch ($error) {
			case ‘0‘:
				$this->errmsg = ‘‘;
				break;
			case ‘1‘:
				$this->errmsg = ‘文件大小超过了php.ini中的限制‘;
				break;
			case ‘2‘:
				$this->errmsg = ‘文件大小超过了浏览器的限制‘;
				break;
			case ‘3‘:
				$this->errmsg = ‘文件部分被上传‘;
				break;
			case ‘4‘:
				$this->errmsg = ‘没有找到要上传的文件‘;
				break;
			case ‘5‘:
				$this->errmsg = ‘文件写入临时文件出错‘;
				break;
			default:
				$this->errmsg = "文件上传错误";
				break;
		}

		if($error == 0 && is_uploaded_file($tmp_name)){

			if($this->check_file_type($name) == false){
				return false;
			}

			if($size > $this->max_size){
				$this->errmsg = "上传文件<font color=‘red‘>".$name."</font>太大";
				return false;
			}

		}

		$this->set_save_path();

		$new_name = $this->file_name != ‘date‘ ? $this->file_name.‘.‘.$this->ext : date(‘YmdHis‘).‘.‘.$this->ext;//设置新文件名

		$this->uploaded = $this->save_path.$new_name;//上传后的文件名
		//移动文件
		if(move_uploaded_file($tmp_name,$this->uploaded)){
			$this->errmsg = ‘文件<font color=red>‘.$this->uploaded.‘</font>上传成功!‘;
			return true;
		}else{
			$this->errmsg = ‘文件<font color=red>‘.$this->uploaded.‘</font>上传失败!‘;
			return false;
		}
	 }

	 /*
	  * 检查上传文件类型
	  * @access private
	  * @param string $filename 等待检查的文件名
	  * @return 如果通过返回true 不通过返回false
	  * */

	 private function check_file_type($filename)
	 {
	 	$ext = $this->get_file_type($filename);

		$this->ext = $ext;

		$allow_types = explode(‘|‘, $this->allow_types);//允许上传文件类型用|分割

		if(in_array($ext, $allow_types)){
			return true;
		}else{
			$this->errmsg = "上传文件".$filename."类型错误";
			return false;
		}
	 }

	/*
	 * 取得上传文件类型
	 * @access private
	 * @param string $filename 要取得文件类型的文件名
	 * @return string 文件类型
	 * */

	 private function get_file_type($filename)
	 {
	 	$info = pathinfo($filename);

		$ext = $info[‘extension‘];

		return $ext;
	 }

	 /*
	  *设置上传后的保存路径
	  * */

	 private function set_save_path()
	 {
	 	$this->save_path = (preg_match(‘/\/$/‘,$this->save_path)) ? $this->save_path : $this->save_path . ‘/‘;

		if(!is_dir($this->save_path)){
			//如果目录不存在,创建目录
			$this->set_dir($this->save_path);
		}
	 }

	 /*
	  * 创建目录
	  * @access private
	  * @param string $dir 要创建目录的路径
	  * @return boolean 失败的时候返回fales
	  * */

	 private function set_dir($dir)
	 {
	 	//检查路径是否存在
		if(is_dir($dir)){
			$this->errmsg = ‘需要创建的文件夹已经存在!‘;
		}
		$dir = explode(‘/‘, $dir);
		$d = "";
		foreach($dir as $v){
			if($v){
				$d .= $v . ‘/‘;
				if(!is_dir($d)){
					$state = mkdir($d, 0777);
					if(!$state)
					$this->errmsg = ‘在创建目录<font color=red>‘ . $d . ‘时出错!‘;
				}
			}
		}
		return true;
	}

}

/*End of file upload.class.php*/

  

时间: 2024-11-11 10:26:28

PHP 上传文件类的相关文章

C# 通用上传文件类

1.Upfile.aspx: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Upfile.aspx.cs" Inherits="Inc_Upfile" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or

php上传文件类

<?php class Upload { private $_max_size; private $_type_map; private $_allow_ext_list; private $_allow_mime_list; private $_upload_path; private $_prefix; private $_error;//当前的错误信息 public function getError() { return $this->_error; } public function

上传文件的响应

package com.lovobook.RandomCodeServlet; import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.util.Collection; import javax.servlet.ServletException;import javax.servlet.annotation.MultipartConfig;import javax.servlet.

android-async-http上传文件

1. AsyncHttpClient, RequestParams ,AsyncHttpResponseHandler三个类使用方法 (1)AsyncHttpClientpublic class AsyncHttpClient extends java.lang.Object 该类通常用在android应用程序中创建异步GET, POST, PUT和DELETE HTTP请求,请求参数通过RequestParams实例创建,响应通过重写匿名内部类 ResponseHandlerInterface

SpringBoot上传文件到七牛云

准备工作 maven pom.xml添加七牛云的sdk依赖 <dependency> <groupId>com.qiniu</groupId> <artifactId>qiniu-java-sdk</artifactId> <version>7.2.27</version> </dependency> 配置项 七牛云上传必要的配置有:accessKey.secretKey.bucket 其中accessKey.

SpringMVC 学习-上传文件分解器 CommonsMultipartResolver 类

Spring 组件 CommonsMultipartResolver 类的主要作用是配置文件上传的一些属性,也可以控制上传文件的大小. 在 springmvc-servlet.xml 配置文件中: <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="d

asp无惧上传类2.2上传文件的同时,通过 Request.QueryString将参数传递到保存页面中

先转一段文字,对不对再评论 在后台asp程序中,以前获取表单提交的ASCII 数据,非常的容易.但是如果 需要获取上传的文件,就必须使用Request对象的BinaryRead方法来读取.BinaryRead方法是对当前输入流进行指定字节数的二进制读取,有点需要注意的 是,一旦使用BinaryRead 方法后,再也不能使用Request.Form 或  Request.QueryString 集合了.结合Request对象的TotalBytes属性,可以将 所有表单提交的数据全部变成二进制,不过

FileUpload 上传文件 帮助类

? 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

利用WebRequest类上传文件

说明:1.WebRequest类是一个抽象类,所以上传类实际使用的是其子类 2.打开Fiddler软件,监视正常网页的文件上传,可以看到http协议的请求和响应信息,简略说明 (第一行:请求说明 POST http://localhost/UpLoad.aspx HTTP/1.1 (请求类型:post,请求地址: http://localhost/UpLoad.aspx,http协议类型:HTTP/1.1) 第二行至多行:请求头(一系列的 key:value) User-Agent: Mozil