Показать сообщение отдельно
  #1 (permalink)  
Старый 13.06.2016, 18:38
Кандидат Javascript-наук
Отправить личное сообщение для фонарик Посмотреть профиль Найти все сообщения от фонарик
 
Регистрация: 23.02.2013
Сообщений: 127

Загрузка файла на сервер и получение его содержимого без перезагрузки страницы
Доброго времени суток. Помогите, пожалуйста, разрешить проблему. Есть страница, на ней пользователь выбирает для загрузки на сервер файлик со своего компьютера. Этот файл должен загрузиться на сервер, а его содержимое (отредактированное) должно придти в ответе от сервера без перезагрузки страницы.
Проблема заключается в составлении ajax запроса на сервер. Облазил все интернеты, нашел решение через форму и фрейм, оно не подходит. Нашел решение при использовании jquery, я не программист, с этой библиотекой еще не познакомился. Нужно решение исключительно на javascript и ajax.
Вот страничка:
<input style=" position:absolute;top:65px; border:1px solid red" type="file" name="myfile">
<input style=" position:absolute;top:95px; border:1px solid blue" type="button" value="Загрузить" onclick="get_data_of_file()">
<div id="div_result" style="position:absolute;top:125px; border:1px solid purple">Здесь должно появиться содержимое загруженного файла.</div>

Скрипт на странице:
var request;
function CreateRequest(){
  var request=null;
  try {request = new XMLHttpRequest();}
  catch (e){
	  try{request=new ActiveXObject("Msxml2.XMLHTTP");}
  	  catch (e){request=new ActiveXObject("Microsoft.XMLHTTP");}
  }
  return request;
}

function get_data_of_file(){
	request=CreateRequest();
	if(request==null){return;}
	request.open("POST","upload.php",true);	
	request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

//...

	request.onreadystatechange = 
	function(){
		if(request.readyState == 4 && request.status == 200){
			document.getElementById('div_result').innerHTML = request.responseText;
		}
	}
}

upload.php
$dir = '/uploads/';
$full_path = $_SERVER['DOCUMENT_ROOT'].$dir;
$file = $_FILES['myfile']['name'];
if(!is_dir($full_path)){
    mkdir($full_path,0777);
}
if(move_uploaded_file($_FILES['myfile']['tmp_name'],$full_path.$file)){
    readfile($full_path.$file);
}

Последний раз редактировалось фонарик, 13.06.2016 в 19:03.
Ответить с цитированием