За последние 24 часа нас посетили 58928 программистов и 1816 роботов. Сейчас ищут 1119 программистов ...

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

Тема в разделе "JavaScript и AJAX", создана пользователем kzpromo, 26 июн 2010.

  1. kzpromo

    kzpromo Активный пользователь

    С нами с:
    26 июн 2010
    Сообщения:
    12
    Симпатии:
    0
    Привет форумчане! В общем столкнулся с проблемой
    А именно загрузка картинок на ajax
    Облазил пол гугла, но не нашел стоящего ajax скрипта

    PHP:
    1. <?php
    2. define ( 'ROOT_DIR', dirname ( __FILE__ ) );
    3. define ( 'ENGINE_DIR', ROOT_DIR . '/exe' );
    4. define ( 'SCRIPT', true );
    5. if($_GET['send'] == "file")
    6. {
    7. header("Content-Type: text/html;charset=windows-1251");
    8. include ENGINE_DIR . '/configuration.php';
    9.   $name = $_FILES["filename"]["name"];
    10.   if(empty($_FILES["filename"]["name"])) echo "Выбирите картинку(".$name.")<br>";
    11.  if(!empty($_FILES["filename"]["name"]))
    12.  {
    13.  if($_FILES["filename"]["size"] > 1024*10*1024) echo "Размер файла превышает <b>10 мегабайт</b><br>";
    14.   if($_FILES['userfile']['type'] != "image/gif" || $_FILES['userfile']['type'] != "image/jpg" || $_FILES['userfile']['type'] != "image/png") {
    15.    echo "К загрузке допускаются только GIF,JPG,PNG картинки<br>";
    16.  }
    17.  }
    18.  
    19.  
    20.   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")
    21.  {
    22.    if(!isset($_COOKIE['files']))
    23.   {
    24.   $tmp_name = totranslit(trim($_FILES["filename"]["name"]));
    25.   $prefix = time();
    26.   $tmp_name = "".$prefix."_".$tmp_name."";
    27.   $url = str_replace("mail.php",'',$_SERVER['PHP_SELF']);
    28.    if(copy($_FILES["filename"]["tmp_name"],"".$_SERVER['DOCUMENT_ROOT']."".$url."download/images/".$tmp_name))
    29.     {
    30.    //заносим в базу
    31.   mysql_query("INSERT INTO " . PREFIX . "_images SET tmp_name='$tmp_name'");
    32.   echo iconv("UTF-8", "WINDOWS-1251", 'html');
    33.   setcookie("files",md5(time()),time()+30);
    34.   }
    35.   else echo "Возникла ошибка загрузки";
    36.   }
    37.   }
    38.  
    39.  
    40.   }
    41.  
    42.   else
    43.   {
    44.   echo <<<HTML
    45. <html>
    46. <head>
    47. <title>IT WORKS</title>
    48. <meta http-equiv="content-type" content="text/html;charset=windows-1251">
    49.   <script language="JavaScript">
    50.    
    51.       function createXMLHttp() {
    52.         if(typeof XMLHttpRequest != "undefined") { // для браузеров аля Mozilla
    53.  
    54.           return new XMLHttpRequest();
    55.         } else if(window.ActiveXObject) { // для Internet Explorer (all versions)
    56.           var aVersions = ["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0",
    57.                    "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp",
    58.                    "Microsoft.XMLHttp"
    59.                    ];
    60.           for (var i = 0; i < aVersions.length; i++) {
    61.             try { //
    62.               var oXmlHttp = new ActiveXObject(aVersions[i]);
    63.  
    64.               return oXmlHttp;
    65.             } catch (oError) {
    66.  
    67.             }
    68.           }
    69.           throw new Error("Невозможно создать объект XMLHttp.");
    70.         }
    71.       }
    72.      
    73.       /* Очень важная функция, обратите на неё внимание.
    74.         Формирует строку запроса "name1=value1&name2=value2&name3...".
    75.         Принимает один аргумент - ссылку на форму.
    76.       */
    77.        
    78.       function getRequestBody(oForm) {
    79.         var aParams = new Array();
    80.         for(var i = 0; i < oForm.elements.length; i++) {
    81.           var sParam = encodeURIComponent(oForm.elements[i].name);
    82.           sParam += "=";
    83.           sParam += encodeURIComponent(oForm.elements[i].value);
    84.           aParams.push(sParam);
    85.         }
    86.         return aParams.join("&");
    87.       }
    88.      
    89.      
    90.       /* В этой ф-ции мы создаём объект XmlHttp, формируем запрос, инициализируем перехватчик состояний
    91.         onreadystatechange, и посылаем наш запрос.
    92.        
    93.         Обратите внимание, что во втором аргументе метода open(..) мы передаём
    94.         ссылку на oForm.action, это сделано как из соображений безопасности, так и ради
    95.         того что-бы сценарий можно-было бы использовать для работы с несколькими страницами.
    96.        
    97.         Так-же, стоит отметить факт отправки дополнительного заголовка: "appilaction/x-www-form-urlencoded"
    98.         Большинство языков (в том числе и PHP), требуют этого, для корректного выполнения
    99.         синтаксического анализа пришедших данных. Этот момент очень важен.
    100.        
    101.       */
    102.      
    103.       function sendRequest() {
    104.         var oForm = document.forms[0];
    105.         var sBody = getRequestBody(oForm);
    106.         var oXmlHttp = createXMLHttp();
    107.        
    108.         oXmlHttp.open("POST",oForm.action, true);
    109.         oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    110.        
    111.         oXmlHttp.onreadystatechange = function() {
    112.           if(oXmlHttp.readyState == 4) {
    113.             if(oXmlHttp.status == 200) {
    114.               saveResult(oXmlHttp.responseText);
    115.             } else {
    116.               saveResult("Ошибка: " + oXmlHttp.statusText);
    117.             }
    118.           }
    119.         };
    120.        
    121.         oXmlHttp.send(sBody);
    122.       }
    123.      
    124.       function saveResult(sText) {
    125.         var sElem = document.getElementById("divStatus");
    126.         sElem.innerHTML = sText;
    127.       }
    128.  
    129.      
    130.       </script>  
    131. </head>
    132. <body>
    133.  <center>
    134.       <form method="POST" action="mail.php?send=file" OnSubmit="sendRequest(); return false0">
    135.         <pre>
    136.         <p>Выбирите картинку:<br>
    137. Картинка:   <input type="file" name="filename"><br>
    138.      <input type="submit" value="Загрузить"></p><br>
    139.           </pre>
    140.         </form>
    141. <pre><div id="divStatus"></div></pre>
    142.     </center>
    143. </body>
    144. </html>
    145.  
    146. HTML;
    147.  
    148.   }
    149. ?>
    В общем на выходе получается, что POST данные не отправляется
    В общем знатоки, что не так? Подкиньте нормальный ajax скрипт
     
  2. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    что в итоге нужно поподробнее?
    не это ? http://habrahabr.ru/blogs/jquery/50223/ только допилить чтобы возвращало картинку обратно на страничку
     
  3. kzpromo

    kzpromo Активный пользователь

    С нами с:
    26 июн 2010
    Сообщения:
    12
    Симпатии:
    0
    спасибо! то что нужно!