BKK
Профессор
- Регистрация
- 21 Окт 2009
- Сообщения
- 157
- Реакции
- 46
- Автор темы
- #1
Привет форумчане! В общем столкнулся с проблемой
А именно загрузка картинок на ajax
Облазил пол гугла, но не нашел стоящего ajax скрипта
В общем на выходе получается, что POST данные не отправляется
В общем знатоки, что не так? Подкиньте нормальный ajax скрипт
А именно загрузка картинок на ajax
Облазил пол гугла, но не нашел стоящего ajax скрипта
PHP:
<?php
set_time_limit(0);
define ( 'ROOT_DIR', dirname ( __FILE__ ) );
define ( 'ENGINE_DIR', ROOT_DIR . '/exe' );
define ( 'SCRIPT', true );
if($_GET['send'] == "file")
{
header("Content-Type: text/html;charset=windows-1251");
include ENGINE_DIR . '/configuration.php';
$name = $_FILES["filename"]["name"];
if(empty($_FILES["filename"]["name"])) echo "Выбирите картинку(".$name.")<br>";
if(!empty($_FILES["filename"]["name"]))
{
if($_FILES["filename"]["size"] > 1024*10*1024) echo "Размер файла превышает <b>10 мегабайт</b><br>";
if($_FILES['userfile']['type'] != "image/gif" || $_FILES['userfile']['type'] != "image/jpg" || $_FILES['userfile']['type'] != "image/png") {
echo "К загрузке допускаются только GIF,JPG,PNG картинки<br>";
}
}
if(!empty($_FILES['filename']) && $_FILES["filename"]["size"] < 1024*10*1024 && $_FILES['userfile']['type'] == "image/gif" || $_FILES['userfile']['type'] == "image/jpg" || $_FILES['userfile']['type'] == "image/png")
{
if(!isset($_COOKIE['files']))
{
$tmp_name = totranslit(trim($_FILES["filename"]["name"]));
$prefix = time();
$tmp_name = "".$prefix."_".$tmp_name."";
$url = str_replace("mail.php",'',$_SERVER['PHP_SELF']);
if(copy($_FILES["filename"]["tmp_name"],"".$_SERVER['DOCUMENT_ROOT']."".$url."download/images/".$tmp_name))
{
//заносим в базу
mysql_query("INSERT INTO " . PREFIX . "_images SET tmp_name='$tmp_name'");
echo iconv("UTF-8", "WINDOWS-1251", 'html');
setcookie("files",md5(time()),time()+30);
}
else echo "Возникла ошибка загрузки";
}
}
}
else
{
echo <<<HTML
<html>
<head>
<title>IT WORKS</title>
<meta http-equiv="content-type" content="text/html;charset=windows-1251">
<script language="JavaScript">
function createXMLHttp() {
if(typeof XMLHttpRequest != "undefined") { // для браузеров аля Mozilla
return new XMLHttpRequest();
} else if(window.ActiveXObject) { // для Internet Explorer (all versions)
var aVersions = ["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0",
"MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp",
"Microsoft.XMLHttp"
];
for (var i = 0; i < aVersions.length; i++) {
try { //
var oXmlHttp = new ActiveXObject(aVersions[i]);
return oXmlHttp;
} catch (oError) {
}
}
throw new Error("Невозможно создать объект XMLHttp.");
}
}
/* Очень важная функция, обратите на неё внимание.
Формирует строку запроса "name1=value1&name2=value2&name3...".
Принимает один аргумент - ссылку на форму.
*/
function getRequestBody(oForm) {
var aParams = new Array();
for(var i = 0; i < oForm.elements.length; i++) {
var sParam = encodeURIComponent(oForm.elements[i].name);
sParam += "=";
sParam += encodeURIComponent(oForm.elements[i].value);
aParams.push(sParam);
}
return aParams.join("&");
}
/* В этой ф-ции мы создаём объект XmlHttp, формируем запрос, инициализируем перехватчик состояний
onreadystatechange, и посылаем наш запрос.
Обратите внимание, что во втором аргументе метода open(..) мы передаём
ссылку на oForm.action, это сделано как из соображений безопасности, так и ради
того что-бы сценарий можно-было бы использовать для работы с несколькими страницами.
Так-же, стоит отметить факт отправки дополнительного заголовка: "appilaction/x-www-form-urlencoded"
Большинство языков (в том числе и PHP), требуют этого, для корректного выполнения
синтаксического анализа пришедших данных. Этот момент очень важен.
*/
function sendRequest() {
var oForm = document.forms[0];
var sBody = getRequestBody(oForm);
var oXmlHttp = createXMLHttp();
oXmlHttp.open("POST",oForm.action, true);
oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
oXmlHttp.onreadystatechange = function() {
if(oXmlHttp.readyState == 4) {
if(oXmlHttp.status == 200) {
saveResult(oXmlHttp.responseText);
} else {
saveResult("Ошибка: " + oXmlHttp.statusText);
}
}
};
oXmlHttp.send(sBody);
}
function saveResult(sText) {
var sElem = document.getElementById("divStatus");
sElem.innerHTML = sText;
}
</script>
</head>
<body>
<center>
<form method="POST" action="mail.php?send=file" OnSubmit="sendRequest(); return false0">
<pre>
<p>Выбирите картинку:<br>
Картинка: <input type="file" name="filename"><br>
<input type="submit" value="Загрузить"></p><br>
</pre>
</form>
<pre><div id="divStatus"></div></pre>
</center>
</body>
</html>
HTML;
}
?>
В общем на выходе получается, что POST данные не отправляется
Выбирите картинку()
В общем знатоки, что не так? Подкиньте нормальный ajax скрипт