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 скрипт, чтото типа так объяснил как смогsmile

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>
так даже фрейм молчитsad

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, Выделяю цветами для лучшей читаемости. и понимания. выделяю главные моменты и так далее. Думаю не чего плохого в том что я стараюсь красиво оформить пост для его лучшего понимания нет

Так легко как твои посты я еще ничего не читал D

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)
проблема с загрузкой файлов на сервер без перезагрузки страницы решена своим способом, чуть позже напишу код smile

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