Zip-архив не работает из-за файла move_uploaded_file вместо копии - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь получить 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.");
    }
...