我正在处理一个应该上传多个文件的脚本。 我有这个html结构
HTML
<form method="POST" action="" enctype="multipart/form-data">
<input type="file" name="test[]" multiple="multiple">
<button type="submit">Test upload</button>
</form>
这是我写的php上传类脚本。
PHP
<?php
class Uploader{
public function upload($files){
$this->files = count($files['name']);
try{
for($i = 0; $i < $this->files; $i++){
$this->error = $files['error'][$i];
$this->tmp_name = $files['tmp_name'][$i];
$this->name = basename($files['name'][$i]);
$this->size = $files['size'][$i];
if($this->error == UPLOAD_ERR_OK){
if(is_uploaded_file($this->tmp_name)){
move_uploaded_file($this->tmp_name, "$this->path/$this->name");
return 'ok';
} else {
throw new Exception('Error tmp file');
}
} else {
throw new Exception('Error');
}
}
}
catch(Exception $e){
return $e->getMessage();
}
}
}
?>
我过去使用for()
循环来执行多个上传任务而没有问题,但现在它只上传一个文件。我也在这里搜索了stackoverflow,并且有些人不鼓励使用foreach()
循环来上传多个文件。任何人都可以建议我解决这个问题吗?
答案 0 :(得分:0)
你在return 'ok';
之后调用move_uploaded_file
,在第一个文件上传后打破for循环..只需删除该行,它应该没问题。
答案 1 :(得分:0)
如果从函数内部调用,则return语句立即结束当前函数的执行,并返回其自变量作为函数调用的值。
Here's一个很棒的脚本,我发现它可以通过PHP上传多个文件。