PHP上传的问题,为什么找不到上传的临时文件? 小弟用了很多时间, 学会了php, 搞了www.kingofcoder.com 编程王网站, 请大家支持一下.这站已经用了我很多钱买伺服器了, 希望能够搞一个出名的编程资源网谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <?php/** * Allow upload multiple files. Most cells in two. * * @author Johin.Xub * @version 0.1alpha */class JUpload{ private $_files = null; private $_configItems = array( 'max_allow_size' => '' , 'allow_types' => '' , 'error_msgs' => array(), 'display_name' => '', 'save_path' => '', 'save_prefix' => '' ); private $_default_save_path = ''; private $_default_max_allow_size = 0; private $_default_allow_types = '*'; private $_default_error_msgs = array( UPLOAD_ERR_OK => '文件上传成功!', UPLOAD_ERR_INI_SIZE => '文件尺寸超过系统允许的最大值! 上传失败!', UPLOAD_ERR_FORM_SIZE => '文件尺寸超过表单规定的值! 上传失败!', UPLOAD_ERR_PARTIAL => '文件上传不完整! 上传失败!', UPLOAD_ERR_NO_FILE => '没有被选定的文件上传! ', UPLOAD_ERR_NO_TMP_DIR => '上次文件不能够保存到临时目录! 上传失败!', UPLOAD_ERR_CANT_WRITE => '文件上传到临时目录不允许保存文件! 上传失败!', 'NOT_ALLOW_TYPE' => '不允许的文件类型! 上传失败!', 'NOT_ALLOW_SIZE' => '文件尺寸太大了! 上传失败!', 'CREATE_DIR_ERR' => '创建文件保存目录失败! 上传失败!', 'CREATE_FILE_ERR' => '保存文件失败!上传失败!' ); //----------------------------------------------------------------------- /** * @param array */ public function __construct($configs=array()) { $this->_fetchAllFiles(); $this->_default_max_allow_size = ini_get('upload_max_filesize'); $this->_default_save_path = $_SERVER["DOCUMENT_ROOT"].'/public/up'; //TMPDIR $this->initialize($configs); } //-------------------------------------------------------------------- /** * Get all file fields . */ private function _fetchAllFiles() { $filesArray =& $_FILES; foreach($filesArray as $field=>$values) { if(is_array($values['name'])) { foreach($filesArray[$field]['name'] as $key=>$value) { $tArray['name'] =& $filesArray[$field]['name'][$key]; $tArray['type'] =& $filesArray[$field]['type'][$key]; $tArray['tmp_name'] =& $filesArray[$field]['tmp_name'][$key]; $tArray['error'] =& $filesArray[$field]['error'][$key]; $tArray['size'] =& $filesArray[$field]['size'][$key]; $this->_files[$field.'['.$key.']'] = $tArray; } } else { $this->_files[$field] = $values; } } } //--------------------------------------------------------------------- /** * Initialize and config all the conifigritions. * The $configs param is an array like below. * $configs = array( * 'fieldname1' => array( * 'display_name' =>'value', * 'max_allow_size'=>'value', * 'allow_types' =>'value', * 'error_msgs' =>array() * ), * 'fieldname2' => array( * 'display_name' =>'value', * 'max_allow_size'=>'value', * 'allow_types' =>'value', * 'error_msgs' =>array() * ), * 'fieldname3' => array( * 'display_name' =>'value', * 'max_allow_size'=>'value', * 'allow_types' =>'value', * 'error_msgs' =>array() * ) * ); */ public function initialize($params=array(), $config_all=false) { if($config_all) { foreach($this->_files as $field=>$values) { $this->_files[$field] = array_merge($this->_files[$field], $params[0]); } } else { foreach($params as $key=>$configs) { $this->_files[$key] = array_merge($this->_files[$key], $configs); } } $i = 0; foreach($this->_files as $fieldKey=>$fieldValue) { if(!@$this->_files[$fieldKey]['display_name']) { $this->_files[$fieldKey]['display_name'] = '第 '.++$i.' 个文件'; } if(!@$this->_files[$fieldKey]['max_allow_size']) { $this->_files[$fieldKey]['max_allow_size'] =& $this->_default_max_allow_size; } if(!@$this->_files[$fieldKey]['allow_types']) { $this->_files[$fieldKey]['allow_types'] =& $this->_default_allow_types; } if(!@$this->_files[$fieldKey]['error_msgs']) { $this->_files[$fieldKey]['error_msgs'] =& $this->_default_error_msgs; } elseif(!is_array(@$this->_files[$fieldKey]['error_msgs'])) { $this->_files[$fieldKey]['error_msgs'] =& $this->_default_error_msgs; } foreach($this->_default_error_msgs as $error_type=>$error_msg) { if(!@$this->_files[$fieldKey]['error_msgs'][$error_type]) { $this->_files[$fieldKey]['error_msgs'][$error_type] =& $this->_default_error_msgs[$error_type]; } }// if(!@$this->_files[$fieldKey]['save_path'])// {// $this->_files[$fieldKey]['save_path'] =& $this->_default_save_path;// } } $this->_exts(); } //---------------------------------------------------------------------- /** * Get all file's extension. */ private function _exts($fieldName='') { $ext = null; if($fieldName) { $this->_files[$fieldName]['ext'] = $this->_ext($this->_files[$fieldName]['name']); $ext =& $this->_files[$fieldName]['ext']; } else { foreach($this->_files as $key=>$values) { $this->_files[$key]['ext'] = $this->_ext($this->_files[$key]['name']); $ext[$key] =& $this->_files[$key]['ext']; } } return $ext; } //---------------------------------------------------------------------- /** * Get file's extension by uri. */ private function _ext($uri) { $uriFrages = explode('.', $uri); if(count($uriFrages)<2) { return ''; } else { return array_pop($uriFrages); } } //--------------------------------------------------------------------- /** * Do upload. */ public function doUpload() { $this->_checkType(); $this->_checkSize(); $this->_checkDir(); $this->_saveFiles(); $this->_setError(); return $this->_files; } //---------------------------------------------------------------------- /** * Check file type. */ private function _checkType() { foreach($this->_files as $fieldName=>$fileInfor) { if($fileInfor['allow_types']!='*') { $allows = explode('|', $fileInfor['allow_types']); $allowed = in_array($fileInfor['ext'], $allows); if(!$allowed) { if(!$this->_files[$fieldName]['error']) { $this->_files[$fieldName]['error'] = 'NOT_ALLOW_TYPE'; } } } } } //---------------------------------------------------------------------- /** * Check if the size is allowed by config. */ private function _checkSize() { foreach($this->_files as $fieldName=>$fileInfor) { $size =& $this->_files[$fieldName]['size']; $allowedSize =$this->_measurement($this->_files[$fieldName]['max_allow_size'], 'b'); $allowSize = ($size < $allowedSize); if(!$allowSize) { if(!$this->_files[$fieldName]['error']) { $this->_files[$fieldName]['error'] = 'NOT_ALLOW_SIZE'; } } } } //---------------------------------------------------------------------- /** * Change measurement . */ private function _measurement($size, $m='k') { $size = strtolower($size); if(is_numeric($size)) { $unit = 'b'; $size = $size; } else { $unit = substr($size, -1); $size = substr($size, 0, -1); } $kSize = null; switch($unit) { case 't': { $kSize = $size*pow(1024, 3); break; } case 'g': { $kSize = $size*pow(1024, 2); break; } case 'm': { $kSize = $size*1024; break; } case 'k': { $kSize = $size; break; } case 'b': { $kSize = ceil($size/1024); break; } case 'bit': { $kSize = ceil($size/(1024*8)); break; } default: { $kSize = $size; } } $m = strtolower($m); $rtSize = null; switch($m) { case 't': { $rtSize = $kSize/pow(1024, 3); break; } case 'g': { $rtSize = $kSize/pow(1024, 2); break; } case 'm': { $rtSize = $kSize/1024; break; } case 'k': { $rtSize = $kSize; break; } case 'b': { $rtSize = $kSize*1024; break; } case 'bit': { $rtSize = $kSize*1024*8; break; } default: { $rtSize = false; } } return $rtSize; } //-------------------------------------------------------------------- /** * Create the directory. */ private function _checkDir() { foreach($this->_files as $fieldName=>$fileInfor) { $dir =& $this->_files[$fieldName]['save_path']; if(!$dir) { $dir = $this->_default_save_path; } else { $dir = trim($dir, '/'); $dir = rtrim($_SERVER["DOCUMENT_ROOT"], '/').'/'.$dir; } if(!is_dir($dir) && !@mkdir($dir, 0777)) { $error =& $this->_files[$fieldName]['error']; if(!$error) { $error = 'CREATE_DIR_ERR'; } } } } //---------------------------------------------------------------------- /** * Save files. */ private function _saveFiles() { foreach($this->_files as $fieldName=>$fileInfor) { $error =& $this->_files[$fieldName]['error']; $tmp_file =& $this->_files[$fieldName]['tmp_name']; $dir =& $this->_files[$fieldName]['save_path']; $fileName =& $this->_files[$fieldName]['name']; $savePrefix =& $this->_files[$fieldName]['save_prefix']; if(!$savePrefix) { $savePrefix = date('Y-m-d_H:i:s'); } $file = rtrim($dir, '/').'/'.$savePrefix.'_'.$fileName; if(file_exists($file)) { $file = rtrim($dir, '/').'/'.$savePrefix.'_'.time().'_'.$fileName; } if(!$error) { if(!move_uploaded_file($tmp_file, $file)) { $error = 'CREATE_FILE_ERR'; } else { $this->_files[$fieldName]['file_url'] = str_replace($file, rtrim($_SERVER["DOCUMENT_ROOT"], '/')); } } else { @unlink($tmp_file); } } } //------------------------------------------------------------------------- /** * Set error string. */ private function _setError() { foreach($this->_files as $fieldName=>$fileInfor) { $this->_files[$fieldName]['error_msg'] = $this->_files[$fieldName]['display_name'].$this->_files[$fieldName]['error_msgs'][$this->_files[$fieldName]['error']]; } }}?> 你的move_uploaded_file这个方法中的参数错误,move_uploaded_file第一个参数是准备移动的文件。第二个才是移动到的文件D:/save/www/doucafe/trunk/public/upload/2008-01-28_10:10:22_vCard.doc这个应该是你上传后的文件吧!你再检查一下看看是否写错了 Discuz7.2 有用户名和密码 怎么不提交就登陆 急 去除网址的正则式问题(急!!!!) nnd 真TMD的郁闷,散分 关于 在 PHP文件中是否能直接潜入JAVASCRIPT语言? IE不支持server push技术的吗? ftp上传错误 如何删除目录呀? HELP 有人用过php里面的关于共享内存函数shmop_open...吗?求教。在线等。 没学过PHP,现在要用PHP来改点东西,有个地方满困扰的!求助 php与表单的问题 正则表达式 ^ 符号疑问
<?php
/**
* Allow upload multiple files. Most cells in two.
*
* @author Johin.Xub
* @version 0.1alpha
*/
class JUpload
{
private $_files = null;
private $_configItems = array(
'max_allow_size' => '' ,
'allow_types' => '' ,
'error_msgs' => array(),
'display_name' => '',
'save_path' => '',
'save_prefix' => ''
); private $_default_save_path = '';
private $_default_max_allow_size = 0;
private $_default_allow_types = '*';
private $_default_error_msgs = array(
UPLOAD_ERR_OK => '文件上传成功!',
UPLOAD_ERR_INI_SIZE => '文件尺寸超过系统允许的最大值! 上传失败!',
UPLOAD_ERR_FORM_SIZE => '文件尺寸超过表单规定的值! 上传失败!',
UPLOAD_ERR_PARTIAL => '文件上传不完整! 上传失败!',
UPLOAD_ERR_NO_FILE => '没有被选定的文件上传! ',
UPLOAD_ERR_NO_TMP_DIR => '上次文件不能够保存到临时目录! 上传失败!',
UPLOAD_ERR_CANT_WRITE => '文件上传到临时目录不允许保存文件! 上传失败!',
'NOT_ALLOW_TYPE' => '不允许的文件类型! 上传失败!',
'NOT_ALLOW_SIZE' => '文件尺寸太大了! 上传失败!',
'CREATE_DIR_ERR' => '创建文件保存目录失败! 上传失败!',
'CREATE_FILE_ERR' => '保存文件失败!上传失败!'
);
//-----------------------------------------------------------------------
/**
* @param array
*/
public function __construct($configs=array())
{
$this->_fetchAllFiles(); $this->_default_max_allow_size = ini_get('upload_max_filesize');
$this->_default_save_path = $_SERVER["DOCUMENT_ROOT"].'/public/up';
//TMPDIR $this->initialize($configs);
}
//--------------------------------------------------------------------
/**
* Get all file fields .
*/
private function _fetchAllFiles()
{
$filesArray =& $_FILES;
foreach($filesArray as $field=>$values)
{
if(is_array($values['name']))
{
foreach($filesArray[$field]['name'] as $key=>$value)
{
$tArray['name'] =& $filesArray[$field]['name'][$key];
$tArray['type'] =& $filesArray[$field]['type'][$key];
$tArray['tmp_name'] =& $filesArray[$field]['tmp_name'][$key];
$tArray['error'] =& $filesArray[$field]['error'][$key];
$tArray['size'] =& $filesArray[$field]['size'][$key];
$this->_files[$field.'['.$key.']'] = $tArray;
}
}
else
{
$this->_files[$field] = $values;
}
}
} //---------------------------------------------------------------------
/**
* Initialize and config all the conifigritions.
* The $configs param is an array like below.
* $configs = array(
* 'fieldname1' => array(
* 'display_name' =>'value',
* 'max_allow_size'=>'value',
* 'allow_types' =>'value',
* 'error_msgs' =>array()
* ),
* 'fieldname2' => array(
* 'display_name' =>'value',
* 'max_allow_size'=>'value',
* 'allow_types' =>'value',
* 'error_msgs' =>array()
* ),
* 'fieldname3' => array(
* 'display_name' =>'value',
* 'max_allow_size'=>'value',
* 'allow_types' =>'value',
* 'error_msgs' =>array()
* )
* );
*/
public function initialize($params=array(), $config_all=false)
{
if($config_all)
{
foreach($this->_files as $field=>$values)
{
$this->_files[$field] = array_merge($this->_files[$field], $params[0]);
}
}
else
{
foreach($params as $key=>$configs)
{
$this->_files[$key] = array_merge($this->_files[$key], $configs);
}
} $i = 0;
foreach($this->_files as $fieldKey=>$fieldValue)
{
if(!@$this->_files[$fieldKey]['display_name'])
{
$this->_files[$fieldKey]['display_name'] = '第 '.++$i.' 个文件';
}
if(!@$this->_files[$fieldKey]['max_allow_size'])
{
$this->_files[$fieldKey]['max_allow_size'] =& $this->_default_max_allow_size;
}
if(!@$this->_files[$fieldKey]['allow_types'])
{
$this->_files[$fieldKey]['allow_types'] =& $this->_default_allow_types;
}
if(!@$this->_files[$fieldKey]['error_msgs'])
{
$this->_files[$fieldKey]['error_msgs'] =& $this->_default_error_msgs;
}
elseif(!is_array(@$this->_files[$fieldKey]['error_msgs']))
{
$this->_files[$fieldKey]['error_msgs'] =& $this->_default_error_msgs;
}
foreach($this->_default_error_msgs as $error_type=>$error_msg)
{
if(!@$this->_files[$fieldKey]['error_msgs'][$error_type])
{
$this->_files[$fieldKey]['error_msgs'][$error_type] =& $this->_default_error_msgs[$error_type];
}
}
// if(!@$this->_files[$fieldKey]['save_path'])
// {
// $this->_files[$fieldKey]['save_path'] =& $this->_default_save_path;
// }
} $this->_exts();
} //----------------------------------------------------------------------
/**
* Get all file's extension.
*/
private function _exts($fieldName='')
{
$ext = null;
if($fieldName)
{
$this->_files[$fieldName]['ext'] = $this->_ext($this->_files[$fieldName]['name']);
$ext =& $this->_files[$fieldName]['ext'];
}
else
{
foreach($this->_files as $key=>$values)
{
$this->_files[$key]['ext'] = $this->_ext($this->_files[$key]['name']);
$ext[$key] =& $this->_files[$key]['ext'];
}
} return $ext;
}
//----------------------------------------------------------------------
/**
* Get file's extension by uri.
*/
private function _ext($uri)
{
$uriFrages = explode('.', $uri);
if(count($uriFrages)<2)
{
return '';
}
else
{
return array_pop($uriFrages);
}
}
//---------------------------------------------------------------------
/**
* Do upload.
*/
public function doUpload()
{
$this->_checkType();
$this->_checkSize();
$this->_checkDir();
$this->_saveFiles();
$this->_setError(); return $this->_files;
} //----------------------------------------------------------------------
/**
* Check file type.
*/
private function _checkType()
{
foreach($this->_files as $fieldName=>$fileInfor)
{
if($fileInfor['allow_types']!='*')
{
$allows = explode('|', $fileInfor['allow_types']);
$allowed = in_array($fileInfor['ext'], $allows);
if(!$allowed)
{
if(!$this->_files[$fieldName]['error'])
{
$this->_files[$fieldName]['error'] = 'NOT_ALLOW_TYPE';
}
}
}
}
}
/**
* Check if the size is allowed by config.
*/
private function _checkSize()
{
foreach($this->_files as $fieldName=>$fileInfor)
{
$size =& $this->_files[$fieldName]['size'];
$allowedSize =$this->_measurement($this->_files[$fieldName]['max_allow_size'], 'b');
$allowSize = ($size < $allowedSize);
if(!$allowSize)
{
if(!$this->_files[$fieldName]['error'])
{
$this->_files[$fieldName]['error'] = 'NOT_ALLOW_SIZE';
}
}
}
} //----------------------------------------------------------------------
/**
* Change measurement .
*/
private function _measurement($size, $m='k')
{
$size = strtolower($size);
if(is_numeric($size))
{
$unit = 'b';
$size = $size;
}
else
{
$unit = substr($size, -1);
$size = substr($size, 0, -1);
}
$kSize = null;
switch($unit)
{
case 't':
{
$kSize = $size*pow(1024, 3);
break;
}
case 'g':
{
$kSize = $size*pow(1024, 2);
break;
}
case 'm':
{
$kSize = $size*1024;
break;
}
case 'k':
{
$kSize = $size;
break;
}
case 'b':
{
$kSize = ceil($size/1024);
break;
}
case 'bit':
{
$kSize = ceil($size/(1024*8));
break;
}
default:
{
$kSize = $size;
}
}
$m = strtolower($m);
$rtSize = null;
switch($m)
{
case 't':
{
$rtSize = $kSize/pow(1024, 3);
break;
}
case 'g':
{
$rtSize = $kSize/pow(1024, 2);
break;
}
case 'm':
{
$rtSize = $kSize/1024;
break;
}
case 'k':
{
$rtSize = $kSize;
break;
}
case 'b':
{
$rtSize = $kSize*1024;
break;
}
case 'bit':
{
$rtSize = $kSize*1024*8;
break;
}
default:
{
$rtSize = false;
}
} return $rtSize;
}
//--------------------------------------------------------------------
/**
* Create the directory.
*/
private function _checkDir()
{
foreach($this->_files as $fieldName=>$fileInfor)
{
$dir =& $this->_files[$fieldName]['save_path'];
if(!$dir)
{
$dir = $this->_default_save_path;
}
else
{
$dir = trim($dir, '/');
$dir = rtrim($_SERVER["DOCUMENT_ROOT"], '/').'/'.$dir;
}
if(!is_dir($dir) && !@mkdir($dir, 0777))
{
$error =& $this->_files[$fieldName]['error'];
if(!$error)
{
$error = 'CREATE_DIR_ERR';
}
}
}
}
//----------------------------------------------------------------------
/**
* Save files.
*/
private function _saveFiles()
{
foreach($this->_files as $fieldName=>$fileInfor)
{
$error =& $this->_files[$fieldName]['error'];
$tmp_file =& $this->_files[$fieldName]['tmp_name'];
$dir =& $this->_files[$fieldName]['save_path'];
$fileName =& $this->_files[$fieldName]['name'];
$savePrefix =& $this->_files[$fieldName]['save_prefix'];
if(!$savePrefix)
{
$savePrefix = date('Y-m-d_H:i:s');
}
$file = rtrim($dir, '/').'/'.$savePrefix.'_'.$fileName;
if(file_exists($file))
{
$file = rtrim($dir, '/').'/'.$savePrefix.'_'.time().'_'.$fileName;
}
if(!$error)
{
if(!move_uploaded_file($tmp_file, $file))
{
$error = 'CREATE_FILE_ERR';
}
else
{
$this->_files[$fieldName]['file_url'] = str_replace($file, rtrim($_SERVER["DOCUMENT_ROOT"], '/'));
}
}
else
{
@unlink($tmp_file);
}
}
} //-------------------------------------------------------------------------
/**
* Set error string.
*/
private function _setError()
{
foreach($this->_files as $fieldName=>$fileInfor)
{
$this->_files[$fieldName]['error_msg'] = $this->_files[$fieldName]['display_name'].$this->_files[$fieldName]['error_msgs'][$this->_files[$fieldName]['error']];
}
}
}
?>
D:/save/www/doucafe/trunk/public/upload/2008-01-28_10:10:22_vCard.doc这个应该是你上传后的文件吧!
你再检查一下看看是否写错了