Форум программистов, компьютерный форум, киберфорум
Web-мастеринг
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 07.07.2016
Сообщений: 5

Ошибка с загрузкой(копированием) файла на локальном сервер

07.07.2016, 21:41. Показов 1332. Ответов 5

Студворк — интернет-сервис помощи студентам
Доброго времени суток, читатель.
Пытался сделать загрузчик файла(изображения) с клиентской(ajax) стороны на серверную(php).
Имеем следующее:
со стороны клиента такую форму
HTML5
1
2
3
4
5
6
7
8
9
10
11
<form id = "upload" method="POST" enctype="multipart/form-data" action="/cms/load.php">
                <input type="text" name="title" id="title" placeholder="Название..." /required>
                <input type="date" name="date" id="date" /required>
                <input type="file" name="img" id="img" /required>
                <select name="type" id="type">
                    <option value="Новость">Новость</option>
                    <option value="Проект">Проект</option>
                </select>
                <p><textarea rows="10" cols="60"  id="text" name="text" placeholder="Текст..." /required></textarea></p>
                <input type="submit" value="Загрузить новость/проект на сервер" id="submit">
            </form>
и висящий ajax
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$("#upload").on('submit', function(e){
        e.preventDefault();
        var that = $("#upload");
        var formData = new FormData(that.get(0));
        $.ajax({
            url: that.attr('action'),
            type: that.attr('method'),
            contentType: false,
            processData: false,
            data: formData,
            success: function(json){
                if(json){
                    console.log(json);
                }
            }       
        });
    });
который шлет всю форму на сервер следующему скрипту

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<? 
    if(isset($_POST['title'], $_POST['date'], $_POST['text'], $_POST['type'])){
        $dbcon =  mysql_connect("localhost","root","");//,"kai");
        $dbsel = mysql_select_db("kai", $dbcon);
        $table = $_POST['type'] == "Новость" ? "news" : "projects";
        $id = mysql_fetch_array(mysql_query("SELECT MAX(id) FROM ".$table))[0];
        //ob_start();
        $uploadpath = "/img/".$id.".".substr(strrchr($fileName, '.'), 1);
        $orig = isset($_FILES['img']) && isset($_FILES['img']['tmp_name']) ? $_FILES['img']['tmp_name'] : '';
        if (empty($orig)) {
            echo "Uploaded file doesn't exist.";
        }
        $copied = move_uploaded_file($orig, $newname);
        // Optional
        if ($copied) {
            echo "File moved.";
        }
        else {
            echo "File not moved.";
        }
    }
    else{
        echo "FALSE";
    }
?>
на что тот мне отвечает следующими ошибками
HTML5
1
2
3
4
5
<br />
<b>Warning</b>:  move_uploaded_file(): Filename cannot be empty in <b>D:\OpenServer\OpenServer\domains\lolka.loc\cms\load.php</b> on line <b>13</b><br />
<br />
<b>Warning</b>:  move_uploaded_file(): Unable to move 'D:\OpenServer\OpenServer\userdata\temp\php298A.tmp' to '' in <b>D:\OpenServer\OpenServer\domains\lolka.loc\cms\load.php</b> on line <b>13</b><br />
File not moved.
Первую ошибку я не могу понять никак, т.к. проверку на существование файл проходит
PHP
1
2
3
4
$orig = isset($_FILES['img']) && isset($_FILES['img']['tmp_name']) ? $_FILES['img']['tmp_name'] : '';
        if (empty($orig)) {
            echo "Uploaded file doesn't exist.";
        }
Шерстил интернет в течении нескольких часов, ничего подходящего не нашел(возможно плохо смотрел). Прошу пнуть в нужную сторону.
Заранее спасибо.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.07.2016, 21:41
Ответы с готовыми решениями:

Проблемы с загрузкой файла на сервер.
Добрый день. Будьте добры, помогите, пожалуйста. Необходимо загрузить файл на сервер. Для этого использую следующий код: ...

Очень странная ситуация с загрузкой файла на сервер!
такая ситуация, сделал форму загрузки файла: &lt;form action=&quot;upload_file.php&quot; enctype=&quot;multipart/form-data&quot;...

Загрузкой файла на сервер и вывести ссылку на них в бд
Доброго времени суток! Помогите, пожалуйста, загрузить несколько файлы на сервер и сделать ссылку в бд mysql. Собственно код на php ...

5
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
07.07.2016, 21:48
cah9102, у вас отсутствует ветка else
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<? 
    if(isset($_POST['title'], $_POST['date'], $_POST['text'], $_POST['type'])){
        $dbcon =  mysql_connect("localhost","root","");//,"kai");
        $dbsel = mysql_select_db("kai", $dbcon);
        $table = $_POST['type'] == "Новость" ? "news" : "projects";
        $id = mysql_fetch_array(mysql_query("SELECT MAX(id) FROM ".$table))[0];
        //ob_start();
        $uploadpath = "/img/".$id.".".substr(strrchr($fileName, '.'), 1);
        $orig = isset($_FILES['img']) && isset($_FILES['img']['tmp_name']) ? $_FILES['img']['tmp_name'] : '';
        if (empty($orig)) {
            echo "Uploaded file doesn't exist.";
        }
        else { // <<<<
            $copied = move_uploaded_file($orig, $newname);
            // Optional
            if ($copied) {
                echo "File moved.";
            }
            else {
                echo "File not moved.";
            }
        } // <<<<
    }
    else{
        echo "FALSE";
    }
?>
0
0 / 0 / 0
Регистрация: 07.07.2016
Сообщений: 5
07.07.2016, 22:16  [ТС]
Cra3y, проблема осталась в точно таком же виде.
Тема актуальна.
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
07.07.2016, 22:23
cah9102, приоритет операторов - 9я строка - надо расставить скобки.
как оно работает у вас:
PHP
1
$orig = isset($_FILES['img']) && (isset($_FILES['img']['tmp_name']) ? $_FILES['img']['tmp_name'] : '');
правильный вариант:
PHP
1
$orig = (isset($_FILES['img']) && isset($_FILES['img']['tmp_name'])) ? $_FILES['img']['tmp_name'] : '';
Добавлено через 2 минуты
кроме того - переменная $newname не определена
0
0 / 0 / 0
Регистрация: 07.07.2016
Сообщений: 5
07.07.2016, 23:02  [ТС]
Cra3y, А в чем проблема с приоритетом операторов, если в ветку if не выбрасывает вообще(но для перестраховки изменил вообще условие)?
с перемнной$newnamr - извиняюсь, от старого кода осталось, суть проблемы не поменялась.
КОД:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
if(isset($_POST['title'], $_POST['date'], $_POST['text'], $_POST['type'])){
        $dbcon =  mysql_connect("localhost","root","");//,"kai");
        $dbsel = mysql_select_db("kai", $dbcon);
        $table = $_POST['type'] == "Новость" ? "news" : "projects";
        $id = mysql_fetch_array(mysql_query("SELECT MAX(id) FROM ".$table))[0];
        //ob_start();
        $uploadpath = "/img/".$id.".".substr(strrchr($fileName, '.'), 1);
        $orig = (isset($_FILES['img'], $_FILES['img']['tmp_name'])) ? $_FILES['img']['tmp_name'] : '';
        if (empty($orig)) {
            echo "Uploaded file doesn't exist.";
        }else{
            $copied = move_uploaded_file($orig, $uploadpath);
            // Optional
            if ($copied) {
                echo "File moved.";
            }
            else {
                echo "File not moved.";
            }
        }
    }
    else{
        echo "FALSE";
    }
ОШИБКА:
HTML5
1
2
3
4
5
<br />
<b>Warning</b>:  move_uploaded_file(/img/2.): failed to open stream: No such file or directory in <b>D:\OpenServer\OpenServer\domains\lolka.loc\cms\load.php</b> on line <b>13</b><br />
<br />
<b>Warning</b>:  move_uploaded_file(): Unable to move 'D:\OpenServer\OpenServer\userdata\temp\php49EF.tmp' to '/img/2.' in <b>D:\OpenServer\OpenServer\domains\lolka.loc\cms\load.php</b> on line <b>13</b><br />
File not moved.
Добавлено через 10 минут
Cra3y, благодарю, лайкнул.
Тему можно закрывать: суть была в неверном пути сохранения, в моем случае("/img/<filename>" => "../img/<filename>");
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
07.07.2016, 23:03
Лучший ответ Сообщение было отмечено cah9102 как решение

Решение

Цитата Сообщение от cah9102 Посмотреть сообщение
А в чем проблема с приоритетом операторов
в данном случае вам повезло - это не отразилось на логике работы.
Цитата Сообщение от cah9102 Посмотреть сообщение
failed to open stream
теперь ошибка другая - у вас скрипт ищет папку /img/ в корне диска
путь надо указывать полный
PHP
1
2
$baseDir = __DIR__ . DIRECTORY_SEPARATOR;
$uploadpath = $baseDir . 'img'.DIRECTORY_SEPARATOR.$id.".".substr(strrchr($fileName, '.'), 1);
+переменная $fileName неопределена
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.07.2016, 23:03
Помогаю со студенческими работами здесь

Сравнение папки с сетевого диска с папкой на локальном диске с копированием изменившихся данных на сервере
необходимо сделать ежедневную сверку( скажем в 20:00) каждого дня папки Work, которая находиться на сетевом диске с папкой Work, которая...

Импорт в SQL сервер. ошибка Поставщик "Microsoft.ACE.OLEDB.12.0" не зарегистрирован на локальном компьютере
Здравствуйте. Пытаюсь реализовать импорт в SQL server из excel. Действую вот по этой инструкции:...

Проблема с копированием базы на другой сервер
Добрый день! Выдаётся ошибка (Invalid universal id) на строке: Set ParentDoc =...

С копированием файла!
Привет всем!!! И снова я нуждаюсь в помощи!!((( Есть такая функция которой я пользуюсь, копирую файлы! Вот она! procedure...

Сервер не отображается в локальном окружении...
Доброго времени суток. Вообщем такая история: Устроился в школу лаборантом(сам студент 3го курса), в школе 41...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru