0
複数の画像をアップロードするための簡単なアップローダクラスを作成しようとしています。私は、uploadFilesメソッドからファイル情報を返し、別のメソッド(uploadGalleryImages)内で使用する必要があります。しかし、私がreturn $ resultを使用すると、最初のファイルがアップロードされた後にforeachループが停止します。返信せずにprint_r($ result)を使用すると、すべてのファイルをアップロードしてクロムのネットワークタブにあるオブジェクトを見ることができます。ここに私の簡略化したコードがあります:複数のファイルをアップロードし、オブジェクトとしてファイル情報を返します
public function uploadGalleryImages() {
$upload_image = $this->uploadFiles($_FILES['image']);
}
private function reArrayFiles($files) {
$array = array();
$file_count = count($files['name']);
$file_keys = array_keys($files);
for ($i=0; $i<$file_count; $i++) {
foreach ($file_keys as $key) {
$array[$i][$key] = $files[$key][$i];
}
}
return $array;
}
private function uploadFiles($files = array()) {
$upload_dir = IMAGE_UPLOAD_DIR;
$thumb_dir = $upload_dir . 'thumbnails/';
$file_array = $this->reArrayFiles($files);
foreach ($file_array as $file) {
$base_name = pathinfo($file['name'], PATHINFO_FILENAME);
$extension = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
$counter = 1;
while(file_exists($upload_dir . $file['name'])) {
$file['name'] = $base_name . $counter . '.' . $extension;
$counter++;
};
if (move_uploaded_file($file['tmp_name'], $upload_dir . $file['name'])) {
$result = new \stdClass();
$result->file_name = $file['name'];
$result->extension = $extension;
//print_r($result);
return $result; // Stops after first file uploaded
} else {
return false;
}
}
}
オブジェクトを配列に保存しますか? –