一个文件上传的类

转载 2004年10月27日 16:31:00

APACHE2+PHP5~~

代码如下:

<?php

////附件上传类

class upload_other extends sys_function
{
 ////声明
 var $upfile_type,$upfile;
 var $d_alt,$extention_list;
 var $datetime,$date;
 var $filestr,$size,$ext;
 var $flash_directory,$extention,$file_path; 

function upload_other()
{
 ////构造函数
 $this->set_extention();
 $this->set_size(50);
 $this->set_date();
 $this->set_datetime();
 $this->set_flash_directory("attachmentFile");
}

////文件类型
function set_file_type($upfile_type)
{
 $this->upfile_type = $upfile_type;
}

////获得文件名
function set_file_name($upfile_name)
{
 $this->upfile_name = $upfile_name;
}

////获得文件
function set_upfile($upfile)
{
 $this->upfile = $upfile;
}

////获得文件大小
function set_file_size($upfile_size)
{
 $this->upfile_size = $upfile_size;
}

////获得文件说明
function set_d_alt($d_alt)
{
 $this->d_alt = $d_alt;
}

////获得文件扩展名
function get_extention()
{
 $this->extention = substr($this->upfile_name,-4);
}  

////设置文件名称
function set_datetime()
{
 $this->datetime = date("YmdHis");
}

////设置目录名称
function set_date()
{
 $this->date = date("Y-m-d");
}

////初始化允许上传文件类型
function set_extention()
{
 $this->extention_list = ".doc|.xls|.ppt|.avi|.txt|.gif|.jpg|.jpeg|.bmp|.png";
}  

////设置最大上传KB限制
function set_size($size)
{
 $this->size = $size;
}

////初始化文件存储目录
function set_flash_directory($directory)
{
 $this->flash_directory = $directory."/".$this->date;
}

////如果目录没有创建则创建文件存储目录
function mk_dir()
{
 if (! file_exists($this->flash_directory)){
  @mkdir($this->flash_directory,0777);
 }
}  

////以数组的形式获得分解后的允许上传的文件类型
function get_compare_extention()
{
 $this->ext = explode("|",$this->extention_list);
}

////检测扩展名是否违规
function check_extention()
{
 for($i=0;each($this->ext);$i++)
 {
  if($this->ext[$i] == strtolower($this->extention))
  {
   $this->check = true;
   break;
  }
 }
 if(! $this->check){$this->showerror("正确的扩展名必须为".$this->extention_list."其中的一种!");}
}

////检测文件大小是否超标
function check_size()
{
 if($this->upfile_size > round($this->size*1024))
 {
  $this->showerror("上传附件不得超过".$this->size."KB");
 }
}

////文件完整路径及文件名称连接
function set_file_path()
{
 $this->file_path = $this->flash_directory."/".$this->datetime.$this->extention;
}

////文件信息
function join_string()
{
 $this->filestr  = $this->file_path."*".$this->d_alt;
}

////上传文件
function copy_file()
{
 if(copy($this->upfile,$this->file_path)){
  print "<script language=javascript>returnvar1('".$this->filestr."');</script>";
 }else {
  print $this->showerror("上传失败,请重试!");
 }
}

////完成保存
function save()
{
 $this->get_extention();
 $this->check_size();
 $this->get_compare_extention();
 $this->check_extention();
 $this->mk_dir();
 $this->set_file_path();
 $this->join_string();
 $this->copy_file();
}

}

?>

继承了sys_function类一个函数,如下:
function showerror($errstr="未知错误!")
{
  echo "<script language=javascript>alert('$errstr');location='javascript:history.go(-1);';</script>";
  exit();
}
用法如下:

///引用并创建对象

<?php

include("../../class/const.php");
include("../../class/upload_other.php");
$f_upload = new upload_other;

?>

////调用
<?php

$f_upload->set_file_type($_FILES['src']['type']);
$f_upload->set_file_name($_FILES['src']['name']);
$f_upload->set_file_size($_FILES['src']['size']);
$f_upload->set_upfile($_FILES['src']['tmp_name']);
$f_upload->set_d_alt($f_upload->post_data("d_alt"));
$f_upload->set_size(100);
$f_upload->save(); 

?>

表单如下:
<script language="javascript">
function check()
{
  if (myform.src.value == '')
  {
    window.alert("文件不能为空!");
    document.myform.src.focus();
    return false;
  }

  if (myform.d_alt.value == '')
  {
    window.alert("说明文字不能为空!");
    document.myform.d_alt.focus();
    return false;
  }
  return true;
}
</SCRIPT>
<form action="" method="post" enctype="multipart/form-data" name="myform" onSubmit="return check()">
<TABLE border=0 cellPadding=3 cellSpacing=4 width=100%>
  <TBODY>
  <TR>
    <TD width=70 nowrap>附件来源:</TD>
    <TD><input name="src" type="file" id="src"><font color="#FF0000">注:上传的文件名称最好不要包含中文字,即为英文或数字,以免发生不能正常下载情况。</font></TD>
  </TR>
  <TR>
    <TD valign="top" nowrap>附件说明文字:</TD>
    <TD colSpan=2><input name="d_alt" type=text id=d_alt style="width:243px" value="" size=68>(可填写附件文档的标题)</TD>
  </TR>
  <TR>
    <TD>&nbsp;</TD>
    <TD colSpan=2><input type="submit" name="Submit" value="提交"><input type="reset" name="Submit2" value="重写"></TD>
  </TR>
  <TR>
    <TD>&nbsp;</TD>
    <TD colSpan=2><font color="#FF0000">注:如果附件文件比较大,请您耐心等待,文件上传可能需要较长时间!</font></TD>
  </TR>
</TABLE>
</form>
print "<script language=javascript>returnvar1('".$this->filestr."');</script>";

该句用到了一个js函数~由于偶使用了编辑器,所以才用到,如果用不到编辑器的话可以修改为上传成功!

改进:
////设置文件名称
function set_datetime()
{
 $this->datetime = date("YmdHis");
}

////设置目录名称
function set_date()
{
 $this->date = date("Y-m-d");
}
这个最好可以让用户自己设置

function get_extention()
{
 $this->extention = substr($this->upfile_name,-4);
}

扩展名不一定是3个字符的

function get_extention()
{
 $tmp=explode(".",$this->upfile_name);
 $arri=count($tmp);
 $this->extention =$tmp[$arri-1];
}

一个经典的PHP文件上传类分享 使用心得

一、需求分析   要球自定义文件上传类,即在使用非常简便的前提下,又可以完成以下几项功能:   ①支持单个文件上传。   ②支持多个文件上传。   ③可以自己指定上传文件的保存位置,可以设置上...
  • qq_36427770
  • qq_36427770
  • 2017年03月15日 15:29
  • 217

封装原生的文件上传类

封装的上传类
  • lwc863481702
  • lwc863481702
  • 2016年09月23日 20:47
  • 832

Java文件上传公共类

以下是本人实现的一个Java文件上传公共类,可实现根据不同文件类型进行不同上传操作功能:package com.sunfairs.util;import java.io.File;import jav...
  • boboo_2000_0
  • boboo_2000_0
  • 2009年12月11日 10:09
  • 2681

php使用upload封装类上传文件

index.html name: up pic: up pic: up pic: up pic: upload.php
  • navioo
  • navioo
  • 2016年07月04日 18:07
  • 5715

面试:----Struts2实现文件上传和下载

在做B/S系统时,通常会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来...
  • lihang_1994
  • lihang_1994
  • 2017年05月21日 14:49
  • 435

ASP文件上传方式大比拼

无组件方式   1.化境ASP无组件上传 V2.0;     一直以来,由于FileSystemObject的局限,所以ASP最大的难题就是文件上传,大多解决法就是安装第三方上传组件。可第三方...
  • Chinamming
  • Chinamming
  • 2013年05月21日 23:06
  • 1144

PHP封装成类(文件上传)

  • zhimab
  • zhimab
  • 2017年07月23日 08:04
  • 190

PHP学习(7)-文件的上传

本文介绍如何把文件上传到服务器并保存。1.一个文件上传表单 Filename:
  • u012426959
  • u012426959
  • 2017年12月04日 09:15
  • 138

类实例_一个单个文件上传类c_upload_one

  • xiaohongyangOK
  • xiaohongyangOK
  • 2011年01月02日 13:54
  • 201

写一个js编写的文件上传控件。(原创的)

function UploadFile(){} UploadFile.prototype={ multiupload:false, intervale:2000000, enable:true, sy...
  • lldgoodone
  • lldgoodone
  • 2011年03月22日 17:23
  • 2458
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个文件上传的类
举报原因:
原因补充:

(最多只允许输入30个字)