求一个php简单的文件上传代码~ 在php.ini中有对文件上传的最大值 upload_max_filesize ,默认是2M如果想上传大的话,得先改配置否则,当然会报错了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $_FILES['file']['size'] 就可以取得上传文件的大小,然后拿它比较就是了。 如果希望在上传前判断文件大小,需要借助于控件才能实现。PHP,JS,HTML都无法实现。 参考下这个http://www.discuz.net/thread-2969646-1-1.html <?php$UPLOAD_CLASS_ERROR = array( 1 => '不允许上传该格式文件',2 => '目录不可写',3 => '文件已存在',4 => '文件太大',5 => '不知名错误');class upload{//临时文件所在路径及文件名var $file;//原文件文件名var $file_name;//原文件大小var $file_size;//原文件类型var $file_type;/** 保存名 */var $savename;/** 保存路径 */var $savepath;/** 文件格式限定 */var $fileformat = array();/** 覆盖模式 */var $overwrite = 0;/** 文件最大字节 */var $maxsize = 0;/** 文件扩展名 */var $ext;/** 错误代号 */var $errno;// 获取文件扩展名function get_ext(){$ext = explode(".", $this->file_name);$ext = $ext[count($ext) - 1];$this->ext = $ext;}//设置保存路径function set_savepath($savepath){$this->savepath = $savepath;}// 设置允许上传的文件格式function set_fileformat($fileformat){$this->fileformat = $fileformat;}//设置覆盖模式function set_overwrite($overwrite){$this->overwrite = $overwrite;}//设置文件保存名function set_savename($savename){if ($savename == '') // 如果未设置文件名,则生成一个随机文件名{srand ((double) microtime() * 1000000);$rnd = rand(100,999);$name = date('Ymd').$rnd;$name = $name.".".$this->ext;} else {$name = $savename;}$this->savename = $name;}//设置上传文件的最大字节限制function set_maxsize($maxsize){$this->maxsize = $maxsize;}/** 构造函数* @param $fileArr 文件信息数组 * @param savename 文件保存名* @param savepath 文件保存路径* @param fileformat 文件格式限制数组* @param overwriet 是否覆盖 1 允许覆盖 0 禁止覆盖* @param maxsize 文件最大尺寸*/function upload($fileArr, $savename, $savepath, $fileformat, $overwrite = 0, $maxsize = 0) {$this->file = $fileArr['file'];$this->file_name = $fileArr['name'];$this->file_size = $fileArr['size'];$this->file_type = $fileArr['type'];// 获取文件扩展名$this->get_ext();//设置保存路径$this->set_savepath($savepath);// 设置允许上传的文件格式$this->set_fileformat($fileformat);//设置覆盖模式$this->set_overwrite($overwrite);//设置文件保存名$this->set_savename($savename);//设置上传文件的最大字节限制$this->set_maxsize($maxsize);}//文件格式检查function validate_format(){if (!is_array($this->fileformat)) // 没有格式限制return true;$ext = strtolower($this->ext);reset($this->fileformat);while(list($var, $key) = each($this->fileformat)){if (strtolower($key) == $ext)return true;}reset($this->fileformat);return false;}//删除文件function del($file){if(!@unlink($file)){$this->errno = 3;return false;}return true;}//删除临时文件function destory(){$this->del($this->file);}//得到错误信息function errmsg(){global $UPLOAD_CLASS_ERROR;if ($this->errno == 0)return false;elsereturn $UPLOAD_CLASS_ERROR[$this->errno];}/** 上传 */function run(){/** 检查文件格式 */if (!$this->validate_format()){$this->errno = 1;return false;}/** 检查目录是否可写 */if(!@is_writable($this->savepath)){$this->errno = 2;return false;}/** 如果不允许覆盖,检查文件是否已经存在 */if($this->overwrite == 0 && @file_exists($this->savepath.$this->savename)){$this->errno = 3;return false;}/** 如果有大小限制,检查文件是否超过限制 */if ($this->maxsize != 0 ){if ($this->file_size > $this->maxsize){$this->errno = 4;return false;}}/** 文件上传 */if(!@copy($this->file, $this->savepath.$this->savename)){$this->errno = 5;return false;}/** 删除临时文件 */$this->destory();return true;}}?><?phpif ($Submit != ''){$fileArr['file'] = $file;$fileArr['name'] = $file_name;$fileArr['size'] = $file_size;$fileArr['type'] = $file_type;/** 所允许上传的文件类型 */$filetypes = array('gif','jpg','jpge','png');/** 文件上传目录 */$savepath = "abc/";/** 没有最大限制 0 无限制*/$maxsize = 0;/** 覆盖 0 不允许 1 允许 */$overwrite = 0;$upload = new upload($fileArr, $file_name, $savepath, $filetypes, $overwrite, $maxsize);if (!$upload->run()){echo "上传失败".$upload->errmsg();}}?><html><head><title>文件上传</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body bgcolor="#FFFFFF" text="#000000"><form name="form1" enctype="multipart/form-data" method="post" action=""><input type="file" name="file"><input type="submit" name="Submit" value="Submit"></form></body></html> 在CSS里,想用变量控制设定的颜色,如果嵌套PHP? 哪间PHP的培训机构好点呢? php include 路径问题 【分享】PHP桌面应用程序---即时通讯软件 记录换行输出问题,谢谢 请问有什么方法可以不 recompile php 而让它支持iconv模块呢? 求助在linux下配置php 哪位高手能把下面这段english翻译一下,并告诉我怎样实现? phpmywind上传图片到服务器 在哪里修改上传服务器的路径 xmlHttp.responseXML为null PHP求助 PHP在Apache中两种工作方式?
$UPLOAD_CLASS_ERROR = array( 1 => '不允许上传该格式文件',
2 => '目录不可写',
3 => '文件已存在',
4 => '文件太大',
5 => '不知名错误'
);class upload
{
//临时文件所在路径及文件名
var $file;
//原文件文件名
var $file_name;
//原文件大小
var $file_size;
//原文件类型
var $file_type;/** 保存名 */
var $savename;
/** 保存路径 */
var $savepath;
/** 文件格式限定 */
var $fileformat = array();
/** 覆盖模式 */
var $overwrite = 0;
/** 文件最大字节 */
var $maxsize = 0;
/** 文件扩展名 */
var $ext;
/** 错误代号 */
var $errno;// 获取文件扩展名
function get_ext()
{
$ext = explode(".", $this->file_name);
$ext = $ext[count($ext) - 1];
$this->ext = $ext;
}
//设置保存路径
function set_savepath($savepath)
{
$this->savepath = $savepath;
}// 设置允许上传的文件格式
function set_fileformat($fileformat)
{
$this->fileformat = $fileformat;
}
//设置覆盖模式
function set_overwrite($overwrite)
{
$this->overwrite = $overwrite;
}
//设置文件保存名
function set_savename($savename)
{
if ($savename == '') // 如果未设置文件名,则生成一个随机文件名
{
srand ((double) microtime() * 1000000);
$rnd = rand(100,999);
$name = date('Ymd').$rnd;
$name = $name.".".$this->ext;
}
else
{
$name = $savename;
}
$this->savename = $name;
}
//设置上传文件的最大字节限制
function set_maxsize($maxsize)
{
$this->maxsize = $maxsize;
}
/*
* 构造函数
* @param $fileArr 文件信息数组
* @param savename 文件保存名
* @param savepath 文件保存路径
* @param fileformat 文件格式限制数组
* @param overwriet 是否覆盖 1 允许覆盖 0 禁止覆盖
* @param maxsize 文件最大尺寸
*/
function upload($fileArr, $savename, $savepath, $fileformat, $overwrite = 0, $maxsize = 0) {
$this->file = $fileArr['file'];
$this->file_name = $fileArr['name'];
$this->file_size = $fileArr['size'];
$this->file_type = $fileArr['type'];
// 获取文件扩展名
$this->get_ext();
//设置保存路径
$this->set_savepath($savepath);
// 设置允许上传的文件格式
$this->set_fileformat($fileformat);
//设置覆盖模式
$this->set_overwrite($overwrite);
//设置文件保存名
$this->set_savename($savename);
//设置上传文件的最大字节限制
$this->set_maxsize($maxsize);
}
//文件格式检查
function validate_format()
{if (!is_array($this->fileformat)) // 没有格式限制
return true;
$ext = strtolower($this->ext);
reset($this->fileformat);
while(list($var, $key) = each($this->fileformat))
{
if (strtolower($key) == $ext)
return true;
}
reset($this->fileformat);
return false;
}
//删除文件
function del($file)
{
if(!@unlink($file))
{
$this->errno = 3;
return false;
}
return true;
}
//删除临时文件
function destory()
{
$this->del($this->file);
}
//得到错误信息
function errmsg()
{
global $UPLOAD_CLASS_ERROR;if ($this->errno == 0)
return false;
else
return $UPLOAD_CLASS_ERROR[$this->errno];
}/** 上传 */
function run()
{
/** 检查文件格式 */
if (!$this->validate_format())
{
$this->errno = 1;
return false;
}
/** 检查目录是否可写 */
if(!@is_writable($this->savepath))
{
$this->errno = 2;
return false;
}
/** 如果不允许覆盖,检查文件是否已经存在 */
if($this->overwrite == 0 && @file_exists($this->savepath.$this->savename))
{
$this->errno = 3;
return false;
}
/** 如果有大小限制,检查文件是否超过限制 */
if ($this->maxsize != 0 )
{
if ($this->file_size > $this->maxsize)
{
$this->errno = 4;
return false;
}
}
/** 文件上传 */
if(!@copy($this->file, $this->savepath.$this->savename))
{
$this->errno = 5;
return false;
}
/** 删除临时文件 */
$this->destory();
return true;
}}
?><?php
if ($Submit != '')
{
$fileArr['file'] = $file;
$fileArr['name'] = $file_name;
$fileArr['size'] = $file_size;
$fileArr['type'] = $file_type;
/** 所允许上传的文件类型 */
$filetypes = array('gif','jpg','jpge','png');
/** 文件上传目录 */
$savepath = "abc/";
/** 没有最大限制 0 无限制*/
$maxsize = 0;
/** 覆盖 0 不允许 1 允许 */
$overwrite = 0;
$upload = new upload($fileArr, $file_name, $savepath, $filetypes, $overwrite, $maxsize);
if (!$upload->run())
{
echo "上传失败".$upload->errmsg();
}
}
?>
<html>
<head>
<title>文件上传</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head><body bgcolor="#FFFFFF" text="#000000">
<form name="form1" enctype="multipart/form-data" method="post" action="">
<input type="file" name="file">
<input type="submit" name="Submit" value="Submit">
</form>
</body>
</html>