Вопрос:Ajax скрипт при загрузке картинок

Статус
В этой теме нельзя размещать новые ответы.

BKK

Профессор
Регистрация
21 Окт 2009
Сообщения
157
Реакции
46
Привет форумчане! В общем столкнулся с проблемой
А именно загрузка картинок на 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 скрипт
 
может добавить тип кодирования для файлов в форме
<form enctype="multipart/form-data" ...
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху