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

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

09.04.2011, 22:34. Показов 5065. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru