getXmlHttp
1.
Михаил (15.10.2012 / 19:46)
как передать файл поправьте пожалуйста
function upload()
{
var conect = getXmlHttp() //подключение
var statusElem = document.getElementById('down_err') //записываем в ид wait переменную statusElem
conect.onreadystatechange = function()
{
if (conect.readyState == 4) //состояние запроса
{
if(conect.status == 200) // состаяние запроса http
{
statusElem.innerHTML = conect.responseText //текст после запроса
setTimeout("javascript:down()", 10);
}
}
};
var dann = 'files=' + document.upload.file.value
conect.open('POST', 'fnc/upload.php',true); // вызов URL
conect.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
conect.send(dann); // отослать запрос
statusElem.innerHTML = 'Идет загрузка файлов...'
}
2.
Михаил (16.10.2012 / 20:58)
поднимаю тему, нужен ответ срочно
3.
Артур (16.10.2012 / 21:41)
Первый раз вижу такой способ загрузки файлов ))) Давно JS позволено грузить файлы с клиента на сервер? )
4.
Михаил (17.10.2012 / 00:42)
3.
Башка, нужно переслать просто файл через эту хрень, тоесть форма кидает инфу этой хрени а эта хрень запускает php скрипт, чтото типа так объяснил как смог
5.
fhgdfhdfhdf (17.10.2012 / 07:42)
4.
Mishutka,
зачем такие сложные не понятные букавки? Нельзя библиотеку JQUERY подключить? Там все проще и красивей.
6.
Михаил (17.10.2012 / 08:13)
5.
6680, хотелось бы это до ума довести
7.
fhgdfhdfhdf (17.10.2012 / 10:47)
ну на чистом JS я AJAX не очень знаю( На JQUERY вот без проблем =)
8.
Михаил (17.10.2012 / 10:56)
7.
6680, можешь привести пример?
9.
Михаил (17.10.2012 / 11:12)
вот нашол материал разобраться только не могу
http://learn.javascript.ru/xhr-forms
10.
fhgdfhdfhdf (17.10.2012 / 11:58)
Ну я вот вообще использую Ajax upload с промежуточной страницей загрузки, типа:
-выбираешь кучу нужных файлов;
-нажимаешь загрузить;
-все выбранные файлы загружаются в папку на сервере (временную папку, которую ты укажешь);
-как все загрузиться, автоматически, блок с кнопкой загрузить заменяется блоком где выводиться содержимое папки;
-к каждому файлу добавляются формы (имя, описание, кнопка загрузить);
-после ввода инфы к одному из файлов и нажатия на кнопку "сохранить", файл загружается в постоянную папку а имя, описание и путь к файлу в БД.
- блок с этим файлом исчезает, заполняешь следующий и так далее.
11.
Михаил (17.10.2012 / 13:05)
6680 (17 Октября 2012 / 11:58)
Ну я вот вообще использую Ajax upload с промежуточной страницей загрузки, типа:
-выбираешь кучу нужных файлов;
-нажимаешь загрузить;
-все выбранные файлы загружаются в папку на сервере (временную папку, которую ты укажешь);
-как все загрузиться, автоматически, блок с кнопкой загрузить заменяется блоком где выводиться содержимое папки;
-к каждому файлу добавляются формы (имя, описание, кнопка загрузить);
-после ввода инфы к одному из файлов и нажатия на кнопку "сохранить", файл загружается в постоянную папку а имя, описание и путь к файлу в БД.
- блок с этим файлом исчезает, заполняешь следующий и так далее.
можно по подобней ато чтото не получается
12.
Михаил (17.10.2012 / 14:52)
поднимаю тему
13.
Артур (17.10.2012 / 15:23)
https://www.google.ru/search?sourceid=chrome&ie=UTF-8&q=асинхронная+загрузка+файлов
14.
Михаил (18.10.2012 / 19:22)
код не работает, помогите плиз
<?php
//include"../sys/fnc.php";
class AsyncUploader extends Controller {
function AsyncUploader() {
parent::Controller();
$this->load->helper('url');
$this->load->helper('form');
}
function index() {
$pageData['title'] = "Асинхронная загрузка файлов";
$this->load->view('main', $pageData);
}
function do_upload() {
$config['upload_path'] = '/upl/';
$config['allowed_types'] = 'mp3';
$config['max_size'] = '5242880';
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload())
{
$mes = array('error' => $this->upload->display_errors());
}
else
{
$mes = $this->upload->data();
}
//создаем js массив
$res = "<script type=\"text/javascript\">";
$res .= "var data = new Object;";
foreach ($mes as $key => $item) {
$res .= "data.".$key." = \"".$item."\";";
}
$res .= "window.parent.handleResponse(data);";
$res .= "</script>";
echo $res;
}
}
?>
15.
Михаил (18.10.2012 / 19:23)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ru">
<head>
<title><?php echo $title; ?></title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<script type="text/javascript">
function hideBtn() {
document.getElementById("sendBtn").innerHTML = "Подождите, идет загрузка...";
}
function handleResponse(mes) {
var resElement = document.getElementById("res");
document.getElementById("sendBtn").innerHTML =
"<input type=\"submit\" value=\"Загрузить\" />";
if (mes.error != null) {
resElement.innerHTML = "Возникли ошибки во время загрузки файла: " + mes.error;
}
else {
resElement.innerHTML = "Файл " + mes.file_name + " загружен";
}
}
</script>
</head>
<body>
<h3>NonStop</h3>
<p><div id="down_err"></div></p>
<?php
$attr = array('target' => 'hiddenframe', 'onsubmit' => 'hideBtn()');
echo form_open_multipart('asyncuploader/do_upload', $attr);
?>
<p>
<input type="file" id="userfile" name="userfile" />
</p>
<div id="sendBtn">
<input type="submit" value="Загрузить" />
</div>
<?php
echo form_close();
?>
<div id="res"></div>
<iframe id="hiddenframe" name="hiddenframe" style="width:0px; height:0px; border:0px"></iframe>
<p><div id="download"></div></p>
</body>
</html>
16.
Дмитрий (18.10.2012 / 19:49)
10.
6680, вот ты такой финдиперцевый, а я вот даже не знаю что сказать..... А вот моя библиотека срабатывает на заголовок "Enum". И на "Oolo". А вот на этот заголовок я не всегда могу заставить ее работать. Почитай побольше, поймешь, почему. И чем больше ты прочтешь и расскажешь мне, тем больше я тебя буду уважать..
Почитай в википедии про этот заголовок, как минимум - про тонкости и нюансы...., а как максимум - прочти тонны литературы. Ты будешь удивлен.....
И не надо тут красным выделять! Ты тут далеко не самый умный........
17.
Михаил (18.10.2012 / 21:05)
а мне то кто нибудь может совет дать по коду?
Добавлено через 01:58 сек.
может мне просто сделать форму с фреймом, и из формы передовать данные во фрейм?
18.
Михаил (18.10.2012 / 21:17)
чтото типа так
<form action="upload.php" method="post" TARGET="upload">
<input type="file" name="file">
<input type="submit" value="загрузить">
</form>
<iframe name="upload" style="width:0px; height:0px; border:0px"></iframe>
как вы думаете?
19.
Михаил (18.10.2012 / 21:40)
<?php
include"../sys/fnc.php";
?>
<h3>NonStop</h3>
<p><div id="down_err"></div></p>
<form action="../fnc/upload.php" method="post" TARGET="upload" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="загрузить">
</form>
<iframe name="upload" style="width:0px; height:0px; border:0px"></iframe>
<p><div id="download"></div></p>
так даже фрейм молчит
20.
fhgdfhdfhdf (18.10.2012 / 23:16)
16.
dima.london, Вообще не понял к чему это было сказано, и я не считаю себя сильно умным и все такое я только изучаю все это, и я рассказал свой вариант аякс загрузки файлов. потому что у самого были похожие проблемы, на прозьбу подробней у меня покашто просто небыло возможности ответить, да и из моего кода сложно вытащить именно то что нужно так как почер пока что плохой. кривовато все. Выделяю цветами для лучшей читаемости. и понимания. выделяю главные моменты и так далее. Думаю не чего плохого в том что я стараюсь красиво оформить пост для его лучшего понимания нет, а если ваши вкусы не совпадают с моими, ну извините, не думал что тут необходимо подстраиваться под чей то вкус. и если вам так не нравиться когда текст как то по особому выделяют, так может быть сделать ограничения для таких простых и мало знающих как я. (Извините что натискиваю свое мнение, просто не сдержался.)
Добавлено через 06:15 сек.
19.
Mishutka, Могу если хочешь попробовать свой загрузчик вырвать из самого проекта, за архивировать и дать ссылку на него, или отправить на почту, мб разберешься в моем коде, что к чему там.
21.
Михаил (19.10.2012 / 00:39)
20.
6680, давай ссылку
Добавлено через 04:11 сек.
<form action="fnc/upload.php" method="post" target="hiddenframe" enctype="multipart/form-data" onsubmit="uplo()">
<input type="file" name="userfile[]" multiple />
<input type="submit" value="Загрузить" />
</form>
<iframe frameborder="0" name="hiddenframe" seamless></iframe>
все было бы хорошо но не открывается функция uplo() вчем может быть ошибка? бутоном открывается
22.
fhgdfhdfhdf (19.10.2012 / 15:12)
Вот посмотри это, не совсем то о чем я говорил, но если довести до ума то очень даже полезная штука.
Добавлено через 02:10 сек.
Вот ....
23.
Артур (19.10.2012 / 15:40)
6680 (18 Октября 2012 / 23:16)
16. dima.london, Выделяю цветами для лучшей читаемости. и понимания. выделяю главные моменты и так далее. Думаю не чего плохого в том что я стараюсь красиво оформить пост для его лучшего понимания нет
Так легко как твои посты я еще ничего не читал
24.
Михаил (19.10.2012 / 20:46)
22.
6680, один фиг не загружает загрузка в красном поле
25.
fhgdfhdfhdf (19.10.2012 / 21:45)
24.
Mishutka, У меня все загружает....
26.
Дмитрий (19.10.2012 / 23:34)
6680 (19 Октября 2012 / 20:45)
24. Mishutka, У меня все загружает....
а чего не жирно-красным? Красиво ведь!
27.
fhgdfhdfhdf (19.10.2012 / 23:50)
Наверное, потому что один админ, считающий себя господом богом, комплексует когда у кого то пост выглядит ярче чем у него, и заводиться без повода. Видимо дурно влияют те знания, которые он извлек из многих сотен книг по веб разработке, и всему такому. Было бы не плохо сходить ему куда не то, расслабиться.
Скоро намечается Хэллоуин, думаю тебе стоит отвлечься от изнурительной работы господа бога веб разработчика, придумать себе костюм, и сходить куда не то в клуб.)
28.
Михаил (20.10.2012 / 00:39)
ребят что не так?
function lo()
{
$t=count($_FILES['userfile']['name']);
for($i=0; $i<$t; $i++)
{
$array[] = $_FILES['userfile']['name'][$i].'<br>';
}
return $array;
}
$data=lo();
//Формируем js-файл
$res = "<script type='text/javascript'>";
$res .= "data = '".$data."';";
$res .= "window.parent.test(data);";
$res .= "</script>";
echo $res;
нужно в $data вывести все без массивов
29.
Михаил (20.10.2012 / 03:03)
проблема с загрузкой файлов на сервер без перезагрузки страницы решена своим способом, чуть позже напишу код
30.
Михаил (20.10.2012 / 13:48)
и так index.htm
<html>
<head>
<title>загрузка файлов на сервер без перезагрузки страницы</title>
<script type="text/javascript">
function uplo()
{
var statusElem = document.getElementById('down_err')
statusElem.innerHTML = 'Пожалуйста подождите идет загрузка файлов на сервер...'
var Elem = document.getElementById('up')
Elem.innerHTML = 'загрузка началась...'
}
function test()
{
var statusElem = document.getElementById('down_err')
statusElem.innerHTML = 'Загружены файлы:<br>'
var Elem = document.getElementById('up')
Elem.innerHTML = '<form action="fnc/upload.php" method="post" target="hiddenframe" enctype="multipart/form-data"><input type="file" name="userfile[]" multiple /><input type="submit" value="Загрузить" OnClick="uplo()" /></form>'
}
</script>
</head>
<body>
<p><div id="down_err"></div></p>
<iframe style="width:200px; height:50px; border:0px" frameborder="0" id="hiddenframe" name="hiddenframe" seamless></iframe>
<div id="up"><form action="fnc/upload.php" method="post" target="hiddenframe" enctype="multipart/form-data">
<input type="file" name="userfile[]" multiple />
<input type="submit" value="Загрузить" OnClick="uplo()" />
</form></div>
</body>
</html>
31.
Михаил (20.10.2012 / 13:53)
fnc/upload.php
<?
function lo()
{
$folder = '../../upl/';
$whitelist = array(".mp3");
$t=count($_FILES['userfile']['name']);
for($i=0; $i<$t; $i++)
{
foreach ($whitelist as $item)
{
if(preg_match("/$item\$/i",$_FILES['userfile']['name'])) $error = false;
}
if(!$error)
{
$uploadedFile = $folder.basename($_FILES['userfile']['name']);
if(is_uploaded_file($_FILES['userfile']['tmp_name']))
{
if(move_uploaded_file($_FILES['userfile']['tmp_name'],$uploadedFile))
{
echo $_FILES['userfile']['name'][$i].'<br>';
}
}
}
}
}
//Формируем js-файл
$res = "<script type='text/javascript'>";
$res .= "window.parent.test();";
$res .= "</script>";
echo $res;
lo();
?>
Добавлено через 04:43 сек.
прошу коментировать, оценить или чтото предложить к этому коду
32.
fhgdfhdfhdf (21.10.2012 / 01:40)
ммм((( а у меня твой что то не работает((( можешь архивом выложить готовый рабочий скрипт. интересная так то идея
URL:
https://visavi.net/topics/34878