Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/27: Рейтинг темы: голосов - 27, средняя оценка - 4.81
 Аватар для TARAKANhoy
4 / 4 / 2
Регистрация: 28.03.2011
Сообщений: 94

Ajax и передача файлов

09.04.2011, 22:34. Показов 5112. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
С горем пополам разобрался с передачей текста через POST по аяксу. Теперь столкнулся с проблемой передачи файлов тем де методом...Код следующий:

index.php
HTML5
1
2
3
4
5
6
7
8
9
<form id="formSaveFoto" method="post" class="formSave" action="users_save.php" enctype="multipart/form-data">
            <label>
             <input type="file" id="inputSaveFoto" name="foto" />
            </label>
            <input type="hidden" id="hidSaveId" name="id" value="'.$myrow['id'].'" />
            <input type="image" id="subSaveFoto" src="images/icons/save.png"/>
            <img id="load_icon_foto" src="./images/icons/load.gif">
            <div class="status_icon_foto"></div>
        </form>
allscript.js
JavaScript
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
$("form#formSaveFoto").submit(function() {
        var inputSaveFoto = $("#inputSaveFoto").val();
        var id = $("#hidSaveId").val();
        var data = 'foto='+ inputSaveFoto +'&id='+ id;
        if(inputSaveFoto && id) {
            $.ajax({
                type: "POST",
                url: "users_save.php",
                data: data,
                beforeSend: function(html) { // запустится до вызова запроса
                    $("#subSaveFoto").hide();
                    $("#load_icon_foto").show();
                    $(".status_icon_foto").html('');;
                },
                success: function(html){ // запустится после получения резуотатов
                    $("#subSaveFoto").show();
                    $("#load_icon_foto").hide();
                    $(".status_icon_foto").append(html);
                    $('img.status_icon_accept').tinyTips('green', 'title');
                    $('img.status_icon_error').tinyTips('red', 'title');
 
                }
            });
        }
        return false;
    });
users_save.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if (isset($_FILES["foto"],$_POST['id'])) {
    // подключаемся к базе
    include'./blocks/bd_ajax.php';
    $db = new db();
    // никогда не доверяйте входящим данным! Фильтруйте всё!
    $id = $_POST['id'];
    // Строим запрос
    if (($_FILES["foto"]["type"]) <> 'image/jpeg')
    {exit ("<img class='status_icon_error' title='Расширение файла должно быть только .jpg или .png!' src='./images/icons/cancel_min.png'>");}
    
    iconv("UTF-8", "windows-1251", $foto);
    $result = mysql_query("UPDATE `users`
                           SET `foto`='$foto'
                           WHERE `id`='$id'");
    if($result) {
        echo "<img class='status_icon_accept' title='Фото успешно сохранено!' src='./images/icons/accepted_min.png'>";
    }
    else {
        echo "<img class='status_icon_error' title='Произошла ошибка на сервере!' src='./images/icons/cancel_min.png'>";
    }
}
Проверка на isset не проходит, но если прописать как &_POST['foto'], то проверка проходит и стопорится на условии проверки расширения файла, не пропускает ни один файл, даже .jpg (кстати подскажите как проверить расширение .png). На запрос к базе не обращайте внимания, код там ещё не дописан, нужно решить проблему с передачей файлов через аякс. Подскажите что мне нужно доработать\изменить, как реализовать в общем?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.04.2011, 22:34
Ответы с готовыми решениями:

Передача файлов по ajax
Друзья, как правильно обрабатывать массив файлов при передаче и сохранить структуру? При попытке передать массив файлов он разбивает...

Передача canvas ajax
При получении картинки php создает файлы размером 0 байт. Ошибка тут или на стороне сервера и мне идти в другой раздел? В консоли...

AJAX передача массива
Не передается массив в data аяксом. Я уверен, что не правильно определил data , но как правильно не пойму. Потому в консоли получаю fail, а...

1
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
09.04.2011, 23:55
Загрузка файлов через AJAX - дело немного более специфичное, чем отправка простых данных.
Обычно используется скрытый фрейм, имя которого указывается в атрибуте target формы.

HTML5
1
<iframe name="uptarget" id="uptarget" style="width: 0px; height: 0px; visibility: none"></iframe>
А отправка формы перехватывается таким образом:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$('#formSaveFoto').submit(function(){
    
    $(this).attr('target', 'uptarget');
    
    $("#subSaveFoto").hide();
    $("#load_icon_foto").show();
    $(".status_icon_foto").html('');;
    
    $('#uptarget').load(function(){
        
        var html = $(this).contents().find('body').html();
        
        $("#subSaveFoto").show();
        $("#load_icon_foto").hide();
        $(".status_icon_foto").append(html);
        $('img.status_icon_accept').tinyTips('green', 'title');
        $('img.status_icon_error').tinyTips('red', 'title');
 
    });
 
});
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.04.2011, 23:55
Помогаю со студенческими работами здесь

Ajax передача данных
Доброго времени суток. Есть два домена третьего уровня. Первый test, второй test1. На test1 реализован вход и ajax запрос: ...

Передача параметров ajax
Здравствуйте! В чем может быть ошибка? В файл передается нулевой параметр. $.ajax({ type: 'POST', url:...

Передача Ajax в обработчик
Здравствуйте. Пытаюсь сделать переход по страницам технологией Ajax, но в обработчик постоянно попадает единица как ID, хотя в Value кнопок...

Передача файла ajax
Всем привет,кто подскажет как передать файл из формы через ajax в php скрипт?и как его правильно принять в скрипте.Заранее спасибо.

Передача данных в БД (ajax)
вот такой код сделал index.php &lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru