Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » php, js: загрузка файлов с помощью js и php

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте,
у меня возникли проблемы при загрузке файла на сервер с помощью js.
 
вот код, который я использую: function file_upload()

Код:
 
var http = new XMLHttpRequest();
if(http) {
    var files = document.getElementById("file");
    var formData = new FormData();
    formData.append("thefile", files.files[0]);
    
    http.open("POST", "upload.php", true);
    http.setRequestHeader("Content-Type", "multipart/form-data");
    http.send(formData);
    
    http.onreadystatechange = function() {
        if(http.readyState == 4 && http.status == 200) {
            alert(http.responseText);
            return false;
        }
    }
}
 

 
вот файла upload.php

Код:
<?php
var_dump($_POST);
var_dump($_FILES);
?>

 
вот html:

Код:
<input type="file" name="file" id="file" onchange="return file_upload();"/>

 
в результате, от страницы я получаю: array(0) { } array(0) { }
 
в чем ошибка??

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 22:39 15-02-2014 | Исправлено: Sutar, 22:40 15-02-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
в чем ошибка??  

в том, что это так не работает.
 
все гораздо сложнее, зависит от браузера, поэтому передавать файлы через ajax не стоит - проще сделать невидимый iframe и постить в него форму.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:58 15-02-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery

Цитата:
проще сделать невидимый iframe и постить в него форму.

может тогда посоветуете?
я делаю добавление на сайт материала, и к нему прилагается 5 изображений.
одно из них, это как лого)
как можно их загрузить на сервер вместе с добавлением в MySQL записи? но файл нужно загрузить и проверить перед добавлением нового материала.
 
т.е. с начало проверяем и загружаем файлы а потом уже и добавляем материал в MySQL
просто может быть такое, что файл не загрузится а все input обновляться и будут пустыми... а усложнять код я не могу...

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 23:44 15-02-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
т.е. с начало проверяем и загружаем файлы а потом уже и добавляем материал в MySQL

постите форму с файлом в iframe, а результатом в нем выдаете скрипт, который берет остальные данные и отправляет на сервер

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:46 15-02-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery

Цитата:
а результатом в нем выдаете скрипт, который берет остальные данные и отправляет на сервер

что то я не понимаю как это всё будет работать. Можно пару ссылок или описать как делать?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 23:49 15-02-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
описать как делать?

я уже описал все, что нужно.
 
результатом постинга файла в iframe будет страница с  
<html>
<script>
parent.запустить_функцию_передачи_остальных_данных();
</script>
</html>


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:54 15-02-2014 | Исправлено: Cheery, 23:54 15-02-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
т.е. после выбора файла, мы с помощью js вписываем куда-то невидимый iframe, а потом что?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 00:00 16-02-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
а потом что?

форма с файлом (а можно сразу и с данными) постится в этот iframe
при этом основная страница не перегружается, а что делать по окончанию загрузки - выдаете результатом постинга в тот iframe
 
такой вот "ajax для бедных", но нет геморроя с передачей файлов.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:01 16-02-2014 | Исправлено: Cheery, 00:02 16-02-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
ааа.... т.е. ставим где-то iframe, а потом в нем стоит форма, в которой мы выбираем файл. И нажимаем на "Добавить" и файл грузится с iframe?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 00:06 16-02-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
а потом в нем стоит форма

зачем в нем? форма может быть где угодно, нужно лишь постить ее в iframe

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:07 16-02-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
т.е. должно быть так?
 

Код:
<form method="post" action="" enctype="multipart/form-data">
 
<script type="text/javascript">
var upload_images = 0;
 
function open_upload_file() {
    document.all["file"].click();
    return false;
}
 
function file_upload() {
    /* Тут, я хотел загружать файл с JS */
    return true;
}
</script>
 
<div id="images_1" style="display: inline;"></div>
<div id="images_2" style="display: inline;"></div>
<div id="images_3" style="display: inline;"></div>
<div id="images_4" style="display: inline;"></div>
<div id="images_5" style="display: inline;"></div>
 
<iframe>
 
<input type="file" name="file" style="display: none;" onchange="return file_upload();"/>
<input onclick="return open_upload_file();" type="submit" value="Добавить изображение"/>
 
</iframe>
 
</form>

 
мне нужно после добавления, в div отобразить загруженную картинку.

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 00:14 16-02-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
как вам удобно, так и делайте.
все равно не читаете, что вам пишут.
 
как вы собираетесь форму сабмиттить?  
и почитайте же основы HTML - что такое iframe и как им пользоваться.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:20 16-02-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery

Цитата:
как вы собираетесь форму сабмиттить? 

добавлю ещё одну кнопку, и в file_upload будет идти на неё нажатие (после выбора файла)
 

Цитата:
все равно не читаете, что вам пишут.  

я не понимаю как это осуществить.

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 00:23 16-02-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
я не понимаю как это осуществить.

для начала - открыть учебник по HTML и прочитать про iframe.
затем про формы, как указать target для формы.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:25 16-02-2014 | Исправлено: Cheery, 00:25 16-02-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery

Код:
Тег <iframe> создает плавающий фрейм, который находится внутри обычного документа, он позволяет загружать в область заданных размеров любые другие независимые документы.

 
это я уже понял, и с ним я уже работал... но я не понимаю, как я смогу получить данные, которые я загрузил...

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 00:27 16-02-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
это я уже понял, и с ним я уже работал.

очень сомневаюсь, по тому примеру, что вы привели выше.
 

Цитата:
но я не понимаю, как я смогу получить данные, которые я загрузил

результатом постинга формы в iframe, как и повторил уже несколько раз, будет html + js код, который выполнит нужные вам дальнейшие действия. ну как еще проще то объяснить?  
 
или не понимаете как вообще http работает? ну так разберитесь и с этим.
 
 
ведь уже и написал все, что нужно.. ну научитесь же без блюдечка работать.

Код:
<html>
<body>
<form method='POST' action='script.php' target='iframe'>
<input type='submit'>
</form>
<iframe name='iframe' style='display:none'></iframe>
<div id='text'></div>
</body>
</html>
 
script.php:
<?php
 
$out =<<<END
<html>
<body>
<script>
parent.document.getElementById('text').innerHTML = 'Iframe loaded';
</script>
</body>
</html>
END;
 
echo $out;
?>

 
ну куда проще то?
 
ps: написал навскидку, могут быть неточности

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:28 16-02-2014 | Исправлено: Cheery, 00:37 16-02-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
страница обновляется при нажатие на кнопку...
я так понял, что при нажатие на кнопку, мы должны отправить файл?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 00:33 16-02-2014 | Исправлено: Sutar, 00:38 16-02-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
страница обновляется при нажатие на кнопку.

браузер какой?  
 

Цитата:
что при нажатие на кнопку, мы должны отправить файл?

да что хотите, то и отправляйте. хоть файл, хоть данные с файлом.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:40 16-02-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery

Цитата:
браузер какой?  

Opera 19.0.1326.63
 
и Google Chrome тоже обновляет страницу
 
вот код:
 

Код:
<?php  
if(isset($_POST["n"]))
{
$out = "
<script>  
parent.document.getElementById('text').innerHTML = 'Iframe loaded';  
</script>";  
 
echo $out; }
?>
 
 
<html>  
<body>  
<form method='POST' action='' target='iframe'>  
<input type='submit' name='n'>  
</form>
<iframe id='iframe' style='display:none'></iframe>  
<div id='text'></div>  
</body>  
</html>  

 
я всё в 1 файл впихнул)))

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 00:43 16-02-2014 | Исправлено: Sutar, 00:45 16-02-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
Opera 19.0.1326.63

все работает..  
 

Цитата:
я всё в 1 файл впихнул

слушайте, если вы не понимаете даже пример, пытаетесь городить чушь, то зачем вам кто то еще?  
глупость сделали в одном файле.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:46 16-02-2014 | Исправлено: Cheery, 00:47 16-02-2014
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Интернет » Web-программирование » php, js: загрузка файлов с помощью js и php


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru