一个文件上传的类
2004-10-27 16:31
309 查看
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> </TD>
<TD colSpan=2><input type="submit" name="Submit" value="提交"><input type="reset" name="Submit2" value="重写"></TD>
</TR>
<TR>
<TD> </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];
}
4000
代码如下:
<?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> </TD>
<TD colSpan=2><input type="submit" name="Submit" value="提交"><input type="reset" name="Submit2" value="重写"></TD>
</TR>
<TR>
<TD> </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];
}
4000
相关文章推荐
- 每天一个linux命令(26):用SecureCRT来上传和下载文件
- [共享]一个文件上传的控件,绝对是精品源码
- Yii上传文件(头像)的一个例子(后端处理)
- git本地文件上传到远程仓库时,本地项目与远成仓库不是同一个项目的BUG
- 自己封装的一个ASP.NET上传文件的方法
- 一个经典的PHP文件上传类分享 使用心得
- 多文件上传的一个局部小程序代码
- .net中的上传文件的一个类
- 一个java上传文件的组件
- http以post方式上传一个文件,构造其请求头和消息报文 application/x-www-form-urlencoded multipart/form-data
- 跨域 上传文件 的一个例子
- 推荐一个Silverlight多文件(大文件)上传的开源项目
- 启动一个支持文件上传的HTTP-Server
- 深入springMVC------文件上传源码解析(上篇) 最近在项目中,使用springmvc 进行上传文件时,出现了一个问题: org.springframework.web.multipart
- 一个比较不错 文件上传判断
- 轻松实现一个页面多文件上传
- 如何制作一个可以上传到fir.im的ipa文件(包含最新的Xcode打包方式)
- ASP.NET MVC 网站开发总结(二)——一个或多个文件的异步或同步上传
- Nginx走HttpProxy连JBoss在上传文件时的一个bug,及其解决
- sdcms的一个bug,总是提示,该文件不允许被上传