上传文件html的输入标签file类型中的名称后要加[],作用是在html中向php建立数组,比如名称为pictures,多文件引用名称则为pictures[],实例如下:
代码如下 复制代码
//手册中实例。
选择文件后点击上传
代码如下 复制代码
查看源文件:
代码如下 复制代码
array
(
[pictures] => array
(
[name] => array
(
[0] => file1.txt
[1] => file2.txt
[2] => file3.txt
)
[type] => array
(
[0] => application/octet-stream
[1] => application/octet-stream
[2] => application/octet-stream
)
[tmp_name] => array
(
[0] => d:easyphptmpphp47.tmp
[1] => d:easyphptmpphp48.tmp
[2] => d:easyphptmpphp49.tmp
)
[error] => array
(
[0] => 0
[1] => 0
[2] => 0
)
[size] => array
(
[0] => 94289
[1] => 65536
[2] => 102400
)
)
)
假设名为 /file1.txt和 /file2.txt 的文件被提交,则 $_files['pictures']['name'][0] 的值将是 file1.txt,而 $_files['pictures']['name'][1] 的值将是 file2.txt。类似的,$_files['file2.txt']['size'][0] 将包含文件 file1.txt 的大小,
有了上面信息了我们要实现多文件上传就简单了
代码如下 复制代码
up_name = $name;
!empty($ext) && $this->up_ext = $ext;
$this->up_rename = $rename;
$this->up_dir = website_dirroot.
$globals['cfg_upload_path'];
$this->initupload();
} else {
exit('upload文件域名称为空,初始化失败!');
}
}
private function initupload() {
if (is_array($_files[$this->up_name])) {
$up_arr = count($_files[$this->up_name]);
$up_all = count($_files[$this->up_name], 1);
$up_cnt = ($up_all - $up_arr) / $up_arr;
for ($i = 0; $i if ($_files[$this->up_name]['error'][$i] != 4) {
$this->up_files[] = array(
'tmp_name' => $_files[$this->up_name]['tmp_name'][$i],
'name' => $_files[$this->up_name]['name'][$i],
'type' => $_files[$this->up_name]['type'][$i],
'size' => $_files[$this->up_name]['size'][$i],
'error' => $_files[$this->up_name]['error'][$i]
);
}
}
$this->up_num = count($this->up_files);
} else {
if (isset($_files[$this->up_name])) {
$this->up_files = array(
'tmp_name' => $_files[$this->up_name]['tmp_name'],
'name' => $_files[$this->up_name]['name'],
'type' => $_files[$this->up_name]['type'],
'size' => $_files[$this->up_name]['size'],
'error' => $_files[$this->up_name]['error']
);
$this->up_num = 1;
} else {
exit('没找找到需要upload的文件!');
}
}
$this->chkupload();
}
private function chkupload() {
if (empty($this->up_ext)) {
$up_mime = array('image/wbmp', 'image/bmp', 'image/gif', 'image/pjpeg', 'image/x-png');
foreach ($this->up_files as $up_file) {
$up_allw = false;
foreach ($up_mime as $mime) {
if ($up_file['type'] == $mime) {
$up_allw = true; break;
}
}
!$up_allw && exit('不允许上传'.$up_file['type'].'格式的文件!');
if ($up_file['size'] / 1024 > $this->up_max) {
exit('不允许上传大于 '.$this->up_max.'k 的文件!');
}
}
} else {
foreach ($this->up_files as $up_file) {
$up_ext = end(explode('.', $up_file['name']));
$up_allw = false;
foreach ($this->up_ext as $ext) {
if ($up_ext == $ext) {
$up_allw = true; break;
}
}
!$up_allw && exit('不允许上传.'.$up_ext.'格式的文件!');
if ($up_file['size'] / 1024 > $this->up_max) {
exit('不允许上传大于 '.$this->up_max.'k 的文件!');
}
}
}
$this->uploading();
}
private function uploading() {
if (io::dircreate($this->up_dir)) {
if (chmod($this->up_dir, 0777)) {
if (!empty($this->up_files)) {
foreach ($this->up_files as $up_file) {
if (is_uploaded_file($up_file['tmp_name'])) {
$file_name = $up_file['name'];
if ($this->up_rename) {
$file_ext = end(explode('.', $file_name));
$file_rnd = substr(md5(uniqid()), mt_rand(0, 26), 6);
$file_name = date('ymdhis').'_'.$file_rnd.'.'.$file_ext;
}
$file_name = $this->up_dir.'/'.$file_name;
if (move_uploaded_file($up_file['tmp_name'], $file_name)) {
$this->up_ret[] = str_replace(website_dirroot, '', $file_name);
} else {
exit('文件上传失败!');
}
}
}
}
} else {
exit('未开启写入权限!');
}
} else {
exit('上传目录创建失败!');
}
}
public function getupload() {
return empty($this->up_ret) ? false : $this->up_ret;
}
function __destruct() {}
}
?>
在上面我们会看到一个for ($i = 0; $i
http://www.bkjia.com/phpjc/444622.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/444622.htmltecharticle上传文件html的输入标签file类型中的名称后要加[],作用是在html中向php建立数组,比如名称为pictures,多文件引用名称则为pictures[],实例如下...