Задать вопрос
samoilenkoevgeniy
@samoilenkoevgeniy
Lead Full-Stack Web Developer

Почему не работает move_uploaded_file при загрузке через iframe?

В общем, ситуация:
Мне нужно без перезагрузки заливать файлы на сервер, для этого стал использовать iframe (Другие решения находил, но они почему-то не прижились).

Меня все устраивало, но решил повторить это же решение в другом месте - перестало работать, при этом - скрипту передается файл (вывожу имя загруженного файла), путь к файлу прописан и работает в других местах.

Код HTML:
<form method='post' enctype='multipart/form-data' action='/handlers/hUploadDocument.php' target='fileFrame'>
                                   <input type='file' id='img_src'  name='file' />
                                   <input type='text' name='name' />
                                   <input type='submit' value='Загрузить' />
                                </form>
                                <iframe style='' id='fileFrame' name='fileFrame'>

                                </iframe>


Код php:

$path_info = pathinfo($_FILES['file']['name']);
        $ext = $path_info['extension'];
        $ext = strtolower($ext);
        $valid_ext = array('doc','docx','xls','xlsx','pdf','jpg', 'jpeg', 'png', 'ppt', 'pptx', 'tiff', 'zip', 'rar'); // допустимые расширения
        if(in_array($ext, $valid_ext)){
            $filename = md5(time().$_FILES['file']['name']).'.'.$ext; // переименовываем файлик

            $path_file = '../docs/'.$_FILES['file']['name'];
            echo $path_file."<br />";
            //echo $_FILES['file']['name'];

            if(!move_uploaded_file($_FILES['file']['name'], $path_file)){
                echo 'Файл не загружен. Повторите попытку';
            }else{
                // дальнейшие дела
            }
        }else{
            echo 'Недопустимый формат файла. '.$ext;
        }
    }
  • Вопрос задан
  • 3339 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
KOLANICH
@KOLANICH
Знаю JS, PHP, C++, C#
1 от iframe это не зависит: move_uploaded_file выполняется на сервере
2 заливай яваскриптом, а не фреймами.
3 код - явный копипаст
4 переименовывать файл в md5 нельзя - легко предугадать и проэксалуатировать при наличии lfi (да, время подбирается, а к тому же его может светить сервер в заголовках). Php сам заботится об именовании: tmp_name и есть безопасное имя (если для его генерации используется безопасный prg).
5 файл имеет имя tmp_name, name - это имя из заголовков.

Откуда вы такие берётесь? Нельзя не читать документацию.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽