AJAX отправка файла. Как отправить файл с помощью Ajax? Как отправить файл на javascript?
Как отправить файл на сервер через Ajax?
Как отправить файлы через скрытый фрейм iframe?
Для начала нужно поместить на сайте форму отправки файла.
Т.е. поместить кнопку обзор чтобы можно было выбрать файл для отправки.
<form id="test_form" method="post" enctype="multipart/form-data" onSubmit="">
<input class="file_form" type="file" name="upload_file" />
</form><br />
<div id="result">Тут будет статус загрузки</div><br /><br />
<div onclick="SendFile();">Отправить файл через Ajax</div><br />
Как видите в форме нет кнопки Отправить.
У формы обязательно должен быть id, в нашем случае id="test_form".
Отлично, все готово.
Теперь осталось только отправить файл.
Для отправки файла подключите к своему сайту перед тегом ScriptJava фреймворк, добавив вот такой код:
<script type="text/javascript" src="http://scriptjava.net/source/scriptjava/scriptjava.js"></script>
Теперь нужно прописать код который будет отправлять файл на сервер через Ajax.
Пишем функцию отправки файла на сервер без перезагрузки страницы:
<script type="text/javascript">
function SendFile() {
//отправка файла на сервер
$$f({
formid:'test_form',//id формы
url:'ajax.php',//адрес на серверный скрипт который будет принимать файл
onstart:function () {//действие при начале загрузки файла
$$('result','начинаю отправку файла');//в элемент с id="result" выводим результат
},
onsend:function () {//действие по окончании загрузки файла
$$('result',$$('result').innerHTML+'<br />файл успешно загружен');//в элемент с id="result" выводим результат
}
});
}
</script>
При нажатии на что либо нужно вызвать функцию которая будет отвечать за отправку файла через Ajax:
SendFile();
Как получать ответ от файла ajax.php
Содержимое файла ajax.php
<?php
if($_FILES['upload_file']['size']>0) {
echo'
<script type="text/javascript">
var elm=parent.window.document.getElementById("result");
elm.innerHTML=elm.innerHTML+"<br />Получен файл '.$_FILES['upload_file']['name'].' размером '.$_FILES['upload_file']['size'].' байт";
</script>
';
}
?>
Как видите все очень просто и отправить файл через javascript на сервер можно
|
Не работает ответ с сервера. Подозреваю потому что адрес странички с которой отправляется запрос выглядит так .../blog/index.php?action=post
Плиз хелп!
Все прекрасно работает.
Один раз глюкануло, но там я перепуталне правильно форму изобразил.
Делал гесту на scriptjava так вообще летает.
Хорошо, инфа о файле выводится. А где сам копируемый файл?)
В папке с кодом пусто, проверил на пару уровней выше - тоже ничего. Куда же он копируется и копируется ли вообще?
"А был ли мальчик?" (с)
а для этого ты должен после копирования его перенести с помощью php потому как он копируется во временную папку в данном примере и сразу удаляется как заканчивает работу php код
вообще то это считается само собой разумеющимся
и вот тут об этом написано
http://www.php.su/phphttp/?uploads
если не считать того что $_FILES['uploadfile'] на самом деле $_FILES['upload_file'], то весьма полезная статья. Минус пол часа от жизни -_-
Все понятно.. используйте плагин и будет все работать.
А нет описания решения без плагина, из 10-20 строк кода, что бы все равно работало?
попытался подключить скрипт. при нажатии на кнопку выдает ошибку.
помогите разобраться пожалуйста
Uncaught TypeError: Cannot set property '$$' of null scriptjava.js:32
А можно выложить исходники!
Добрый день.
Технология AJAX в свое сути достаточно проста - обрабатываем форму, готовим post или get данные и отправляем серверу.
Посмотрев как передаются файлы обычным методом (), то становится ясно, что файл передается file=(содержимое файла), где file - имя .
Вопрос в том, как подготовить post данные для отправки файла на сервер?
В интернете ходит много рецептов - возьмите эту библиотеку, возьмите ту...
На вашем сайте я почерпнул много полезной информации. Подскажите саму суть отправки файлов - как получить содержимое файла для передачи на сервер?
В том то и дело, что никак не получить. Только отправить через форму. Поэтому плагины и нужны: они создают форму и отправляют её в скрытом режиме (через iframe, например)
А можно ли как-то усовершенствовать плагин, чтобы была возможность с сервера передавать данные на клиент, например о том, что превышен размер файла?
а как кроме файла передать еще-какие-нибудь данные?
а как прочесть json-ответ в onsend:function ()?
вот так я смогла отдать ответ:
response.getWriter().print("parent.aflerLoad('"+jAns+"');");
спасибо автору
как ответ с сервера вставить в div по его id
как обработать ответ с сервера???
тормоз я, не увидел сначало
А как отправить файл на другой сервер? Например, форма лежит прямо на компьютере, а файл-обработчик php - на site.com?
Никак не пойму в чем дело.
Но при загрузке изображений через аджакс функции getimagesize, imagecreatefromjpeg, imagecreatefrompng и imagecreatefromgif не работают, хотя без аджакса все нормально работало.
getimagesize($_FILES['uploadfile']['tmp_name'][$key]) не возвращает данных загруженного изображения.
Помогите если пожалуйста
не стоит так делать _$$.$s.randnum(0,1000000);
Добрый день,
как помимо файла передать еще какие-нибудь данные?
присоединяюсь к предыдущему коментарию
как отправить кроме файла сразу еще одно значение, чтобы можно было в пхп скрипте поменять имя загружаемого файла?
да а как помимо картинки передать еще какие то данные? так ни кто и не придумал
что остается только еще один запрос делать?
неужели нельзя как то все в один запрос запихать?