Не могу передать данные input type file с JS в PHP

131
18 мая 2019, 12:30

Есть форма, 90% формы обрабатывается php, поле с вложениями обрабатывается js, так как заказчик хочет видеть и редактировать аттачи перед отправкой. При удалении аттача - файлы не приходят, php выдает ошибку 4, если отправлять как есть, не редактируя - все ок.

Расписываю более подробно: В JS я не особо силен, поэтому мое понимание js который используется у меня - вполне может быть некорректным При помощи js я получаю список аттачей с input type files. Так как этот список в DOM доступен только для чтения - для того чтобы его изменить я делаю копию этого списка аттачей, в отдельный объект, его правлю и дальше как-то должен отправить(пробовал реализовать отправку через FormData) а сам инпут очищаю - это судя по тому коду js который я использую. При вардампе $_FILES мне приходят данные с формы за исключением input type file. Как я писал выше, массив $_FILES выдает ошибку 4. Вот ссылка на полную версию этого вопроса, который люто заминусовали. Ссылка на зря заминусованный вопрос Редактирование аттачей делал отсюда ТЫК!

в php файлы принимаю так:

$filess = $_FILES;
    var_dump($filess);
    foreach($_FILES['file']['name'] as $key => $value){
        $filename = $_FILES['file']['tmp_name'][$key];
        var_dump($filename);
        $file = fopen($filename, "rb");
        $data = fread($file,  filesize( $filename ) );
        fclose($file);
        $NameFile = $_FILES['file']['name'][$key]; // в этой переменной надо сформировать имя файла (без всякого пути);
        $File = $data;
        $multipart .=  "$EOL--$boundary$EOL";   
        $multipart .= "Content-Type: application/octet-stream; name=\"$NameFile\"$EOL";   
        $multipart .= "Content-Transfer-Encoding: base64$EOL";   
        $multipart .= "Content-Disposition: attachment; filename=\"$NameFile\"$EOL";   
        $multipart .= $EOL; // раздел между заголовками и телом прикрепленного файла 
        $multipart .= chunk_split(base64_encode($File));   
   }

Подозреваю что у меня либо с фронта не отправляются данные(хотя в консоли я вижу их), либо в php неправильно их принимаю. Подскажите пожалуйста что не так.

READ ALSO
Как заменить url типа — «/page.php?id=4» на «/contact» и т.п.? [закрыт]

Как заменить url типа — «/page.php?id=4» на «/contact» и т.п.? [закрыт]

Подскажите, как заменить url типа — «/pagephp?id=4» на «/contact» (или другое, взависимости от столбца title в БД)

137
Несколько роутов или один роут и условия в нём?

Несколько роутов или один роут и условия в нём?

Недавно возник довольно интересный вопрос о том, как лучше строить Rest APIУсловно говоря, есть два варианта: 1

141
Nested sets - нужна только для каталогов? Нужна ли таблица для конечных элементов?

Nested sets - нужна только для каталогов? Нужна ли таблица для конечных элементов?

Во всех статьях про модели Nested Sets я не смог понять для каких данных она нужнаТо есть приведу пример:

128
Сортировка массива по дате php

Сортировка массива по дате php

Есть массив формата

138