@VicTHOR
(╮°-°)╮┳━━┳ ( ╯°□°)╯ ┻━━┻

Почему move_uploaded_file выдает false?

Отправляю AJAXом файлы.
spoiler
$('input[type="file"]').each(function() {
let key = $(this).attr("name");
$(this).on("click", function (e) {
  if ($(this).parent().hasClass("label_disable")) {
    e.preventDefault();
  }
})
  .on('drop change', function(e) {
    e.preventDefault();
    let form_data = new FormData();
    let files = e.type === 'drop' // Проверяем тип события
      ? e.originalEvent.dataTransfer.files // При drop получаем файлы из события
      : this.files; // При change получаем файлы из инпута

    $.each(files, function() {
      form_data.append(key, this);
    })
    $.ajax({
      url: 'addPhotos.php',
      dataType: 'text',
      data: form_data,
      type: 'POST',
      cache: false,
      contentType: false,
      processData: false,
      success: (response) => {
        console.log(response);

В php массив файла разбираю на перменные, затем проверяю из какого инпута было отправлено (по имени), ну и перемещаю, ничего такого..
spoiler
$btnName = array_keys($files);
//$f_name, $f_type, $f_tmp_name, $f_error, $f_size
extract($files[$btnName[0]], EXTR_PREFIX_ALL, "f");

if (is_array($f_error)) {
    foreach ($f_error as $value) {
        if ($value > 0) $result[] = $value;
    }
} elseif ($f_error > 0) {
    $result[] = $value;
}
if (!empty($result)) return response($result);

    if ($btnName[0] == AddPhotos::$names[0]) { //photo_anno_main
        if (!empty($scanMain)) {
            foreach ($scanMain as $isHave) {
                if (preg_match('/^1_/', $isHave)) {
                    return response($result[] = 'Ошибка: Главное фото уже есть.');
                }
            }
        }
        if (preg_match('/^1_/', $f_name)) {
            move_uploaded_file($f_tmp_name, $dir."ФО_ТО/".$f_name);
            $_SESSION['photos']['unlink'][] = $dir."ФО_ТО/".$f_name;
        } else {
            echo $f_name;
            var_dump(scandir($dir."ФО_ТО/"));
            echo $f_tmp_name;
            var_dump(move_uploaded_file($f_tmp_name, $dir."ФО_ТО/1_".$f_name));
            $_SESSION['photos']['unlink'][] = $dir."ФО_ТО/1_".$f_name;
        } 
    }

Доходит до последнего условия, var_dump(move_uploaded_file()) выдает false. $f_tmp_name выдает путь tmp/php_upload/.., т.е. от диска. папка tmp и папка home на одном уровне.
var_dump(scandir()) отрабатывает, директория существует, имя $f_name примерно GSDGSDG 1.jpg
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
BojackHorseman
@BojackHorseman Куратор тега PHP
...в творческом отпуске...
var_dump(is_writable($dir. "ФО_ТО/"));
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
а есть ли права на запись файлов в директорию?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы