Я пытаюсь получить zip-архив, созданный для загружаемых файлов. Мне сказали, что, поскольку я использую move_uploaded_file
, когда я иду на поиск файла в zip-архиве, он недоступен, потому что я переместил его вместо копирования.
Теперь я пытаюсь выяснитьузнать, как настроить мой код, куда файл все еще перемещается (потому что мне все еще нужны эти функции для других частей скрипта), а затем скопировать его также и для создания zip.
Я нашел этот вопрос и подумалэто может быть полезно:
PHP: как скопировать загрузку временного файла в несколько мест?
Я получаю эту ошибку:
Предупреждение : ZipArchive :: close (): Невозможно удалить файл: нет такого файла или каталога в
Как я могу скопировать имя файла и затем извлечьэто в моем другом файле, чтобы я мог сжать файлы?
fileUpload класс - в частности, функция загрузки:
public function upload() {
if (!empty($_FILES["uploadedFile"]["name"])) {
$file_count = count($_FILES['uploadedFile']['name']);
$results = [];
for ($i = 0; $i<$file_count; $i++) {
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["uploadedFile"]["name"][$i]);
$uploadOk = 1;
$this->imageFileTypes[] = $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
if ($uploadOk == 0) {
return 0;
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["uploadedFile"]["tmp_name"][$i], $target_file)) {
copy($target_file)[$i];
$results[] = basename($_FILES["uploadedFile"]["name"][$i]);
} else {
return 0;
}
}
}
return $results;
Тогда вот код для почтового индекса:
$date = new DateTime();
$fu = new fileUpload();
$filename = $fu->upload();
$uploadedFileTypes = $fu->getImageFileTypes();
$extensions = ['pdf','jpg', 'jpeg', 'png', 'gif'];
$target_dir = "uploads/";
$differentExtensions = array_diff($uploadedFileTypes, $extensions);
if (count($differentExtensions) > 0) {
$f = new ZipArchive();
$zip = $f->open($target_dir . basename($_FILES['uploadedFile']['name'][0]) . ".zip", ZipArchive::CREATE | ZipArchive::OVERWRITE);
//var_dump($f);
//var_dump($zip);
if ($zip) {
for ($index = 0; $index < count($_FILES['uploadedFile']['name']); $index++) {
$f->addFile($_FILES['uploadedFile']['tmp_name'][$index], $_FILES['uploadedFile']['name'][$index]);
}
//$check = $f->addFile($_FILES['uploadedFile']['tmp_name'][$index], $_FILES['uploadedFile']['name'][$index]);
//var_dump($check);
$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.");
}