【发布时间】:2019-08-02 14:52:48
【问题描述】:
我遇到了无法上传多个文件的情况。如果我添加多个文件,则只有最后一个文件会发送。我知道这意味着我需要将文件放入一个数组中,但是当我尝试时,我从 fileUpload 类中得到一个错误。
如果我将输入 html 的名称更改为 `name="uploadedFile[]"',那么我的 fileUpload 类中会出现以下错误:
PHP 警告:basename() 需要参数 1 为字符串,数组中给出 /php/fileUpload.php 第 11 行
PHP 警告:move_uploaded_file() 需要参数 1 为字符串,数组中给出 /php/fileUpload.php 第 46 行
然后在我的 Communication 课程中,您会看到如果上传了多个文件,我会将其以 zip 格式发送,因此我不确定是否需要在其中更改任何内容。
有人知道我需要做什么才能使阵列工作吗?
HTML:
<input type="file" name="uploadedFile" class="inputfile" id="uploadedFileTest" data-multiple-caption="{count} files selected" multiple>
文件上传类:
class fileUpload
{
public function __construct()
{}
public function upload() {
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["uploadedFile"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
return 0;
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["uploadedFile"]["tmp_name"], $target_file)) {
return basename($_FILES["uploadedFile"]["name"]);
} else {
return 0;
}
}
}
}
php 文件的其余部分:
$files = null;
if (!empty($_FILES['uploadedFile']['name']) && $_FILES['uploadedFile']['error'] != 4) {
$fu = new fileUpload();
$filename = $fu->upload();
$template = str_replace("{filename}", "A file was uploaded. You can download the file from: <a href='https://mbkit.com/php/uploads/{$filename}'>{$filename}</a>", $template);
clearstatcache();
}
通信类 - 发送附件的内容:
if (!empty($file) && !$recipient && count($file['uploadedFile']['name']) > 1) {
$f = new ZipArchive();
$zip = $f->open('uploads/' . $file['uploadedFile']['name'][0] . ".zip", ZipArchive::CREATE | ZipArchive::OVERWRITE);
if ($zip) {
for ($index = 0; $index < count($file['uploadedFile']['name']); $index++) {
// echo $file['uploadedFile']['name'][$index] . "\n";
$f->addFile($file['uploadedFile']['tmp_name'][$index], $file['uploadedFile']['name'][$index]);
}
$f->close();
$message["attachment[0]"] = curl_file_create("uploads/{$file['uploadedFile']['name'][0]}.zip",
pathinfo("uploads/{$file['uploadedFile']['name'][0]}.zip", PATHINFO_EXTENSION),
$file['uploadedFile']['name'][0] . ".zip");
} else {
throw new Exception("Could not zip the files.");
}
// $message['html'] = str_replace("{filename}", "A file was uploaded. You can download the file from: <a href='https://mbkit.com/php/uploads/{$file['uploadedFile']['name']}.zip'>{$file['uploadedFile']['name']}</a>", $message['html']);
} elseif (count($file['uploadedFile']['name']) == 1) {
$message["attachment[0]"] = curl_file_create("uploads/{$file['uploadedFile']['name']}",
pathinfo("uploads/{$file['uploadedFile']['name']}", PATHINFO_EXTENSION),
$file['uploadedFile']['name']);
}
【问题讨论】:
-
$file['uploadedFile'][0]['name']、$file['uploadedFile'][1]['name']等