我在上传功能上收到此警告,但我无法弄清楚原因。我已经查看了同一错误的其他问题,但无法得到解决方案。
function upload($name,$old,$dir=NULL,$autoid,$number)
{
global $def_dir;
if(!$dir)$dir="../".$GLOBALS["logo"];
if($_FILES[$name]['name']){
if( is_file($dir.$old) ) unlink($dir.$old);
$ext=substr($_FILES[$name]['name'],strpos($_FILES[$name]['name'],$name),strlen($_FILES[$name]['name']));
$file=$autoid.'_'.$number.$ext;
move_uploaded_file($_FILES[$name]['tmp_name'],$dir.$file);
}else{
$file=$old;
}
return($file);
}
我试过var_dump($_FILES[$name]['name']
结果是string(24) "generic-project-icon.png"
我已尝试print_r($_FILES[$name]['name'])
,结果为generic-project-icon.png
我无法弄清楚为什么会这样。 任何帮助深表感谢。感谢。
答案 0 :(得分:1)
($name,$old,$dir=NULL,$autoid,$number)
参数,默认值移至结束($name,$old,$autoid,$number,$dir=NULL)
global
个变量将它们作为参数传递当您上传多个文件时,回答您的问题$_FILES[$name]['name']
可以是数组。 Documentation
答案 1 :(得分:0)
如果您不确定要传输多少文件,可以将数据自动转换为数组并循环播放。如果只有一个字符串,那么它将成为单个元素数组并循环一次。 Technique Demo
参见内联评论......
代码(未经测试):
function upload($name,$old,$autoid,$dir=NULL,$number=1){ // move parameters with default values to the end
// remove global variable, it is unused/pointless
if(!$dir)$dir="../".$GLOBALS["logo"];
if(isset($_FILES[$name]['tmp_name'])){ // check that the element isset()
foreach((array)$_FILES[$name]['tmp_name'] as $n){ // loop all elements
if( is_file($dir.$old) ) unlink($dir.$old);
$file=$autoid.'_'.$number.strstr($name, '.'); // use strstr() to get "dot & extension"
move_uploaded_file($n,$dir.$file);
}
}else{
$file=$old;
}
return($file);
}