Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с Upload на xAjax 
V
    Опции темы
helflip
  Дата 16.10.2007, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 14.5.2006
Где: Moscow

Репутация: 2
Всего: 4



Всем привет!

Сталкнулся с проблемой загрузки файла на xajax!

Я скачал класс для аякса для загрузки файла, он экстендин основной клас xajax'a по идее все работает если создавать простую функцию, типа вывести алерт, заменить див, но как только начинаешь через него загружать файл, все функции основного класса не работаю smile  я уже как только не пробывал ни чего не получаеться, а мне надо чтобы после загрузки файла в див вывелась ссылка на файл!

вот код
Код

<?php
session_start();
require('xajaxExtend.php');


//+-----------------------------------------------+
//|Ajax Функция                                   |
//+-----------------------------------------------+



function uploadFiles(){
    
    $objResponse= new xajaxResponse();
    
    $target_path = "files/";
    $i = 0;
    $uploading = "";

    
    move_uploaded_file($_FILES['file']['tmp_name'], $target_path . basename( $_FILES['file']['name']));    
        
    
    $Out = "<a href='http://ims/lgn/test/ajax/file/{$_FILES['file']['name']}'>File</a>";
    $objResponse->addAssign("diff","innerHTML",$Out);
    
return $objResponse->getXML();
}




$objAjax = new xajaxExtend();
/* регистрируем функции  checkIka для объекта xajax */

$objAjax->registerFunction("uploadFiles");
/* обрабатываем запрос */
$objAjax->processRequests();
$objAjax->printJavascript();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd">
<html>
<head>
    <title>xajax 0.2.4 File Upload Demo</title>

    <script language="Javascript">
    function checkUploadForm() {
        // You can do some checks here
        return xajax.upload('uploadFiles','uploadForm');
    }
    </script>
</head>
<body>

<h2>xajax 0.2.4 File Upload Demo</h2>

<div id="uploadMessageDiv"></div>

<div id="uploadFormDiv">
<form id="uploadForm" name="uploadForm" onsubmit="return checkUploadForm()" method="POST" enctype="multipart/form-data">
<input type="file" name="file"/><br/>
<input type="submit" value="Upload Files"/>
</form>
</div>


<div align="center" id="diff" style="position:fixed;top:100px;display:none;"></div>



</body>
</html>


Помогите пожалуста))

Это сообщение отредактировал(а) helflip - 16.10.2007, 13:43
--------------------
 
PM MAIL   Вверх
mishaSL
Дата 16.10.2007, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



helflip, покажи пожалуйста файлик xajaxExtend.php
На сам класс то надо бы посмотреть smile 


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Empirik
Дата 16.10.2007, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 28.10.2005
Где: Россия, Пермь

Репутация: нет
Всего: 1



То же бьюсь с этой проблемой. Нужно узнать, как можно передать xml на обработку движку xajax без произведения запроса к серверу. Ну тоесть допустим руками сформировали xml которую может понять xajax и одать ему на исполнение 
--------------------
Постоянно удивляюсь человеческой фантазии напридумывают гаджетов
PM MAIL WWW ICQ   Вверх
helflip
Дата 17.10.2007, 06:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 14.5.2006
Где: Moscow

Репутация: 2
Всего: 4



Значит я не один такойsmile) 

вот extends xajax

Код

<?php
/**
* @author RainChen @ 2006-9-5 13:58
* @uses xajax file upload extend
* @access public
* @param null
* @return null
* @version 0.1 
*/
include_once('xajax.inc.php');

class xajaxExtend extends xajax
{
    
    function processRequests()
    {
        if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_GET['xajax']))
        {
            $this->initProcessRequests();
        }
        parent::processRequests();
    }
    
    function initProcessRequests()
    {
        $xajaxRequest = array();
        $xajaxRequest['xajaxr'] = @$_GET['xajaxr'];
        $xajaxRequest['xajax'] = @$_GET['xajax'];
        // reset RequestMode
        if(isset($_GET['xajax']))
        {
            $_GET['xajax'] = null;
            unset($_GET['xajax']);
        }
        // get the upload file local path
        foreach(array_keys($_FILES) as $name)
        {
            if(isset($_GET[$name]) && !isset($_POST[$name]))
            {
                $_POST[$name] = $this->_decodeUTF8Data($_GET[$name]);
            }
        }
        $xajaxargs = array(get_original_data($_POST));
        $xajaxRequest['xajaxargs'] = $xajaxargs;
        $_POST = $xajaxRequest;
    }
    
    function getJavascript($sJsURI="", $sJsFile=NULL)
    {    
        $html = parent::getJavascript($sJsURI,$sJsFile);
        // get the extend js
        if ($sJsFile == NULL) $sJsFile = "xajax_js/xajax_extend.js";
        if ($sJsURI != "" && substr($sJsURI, -1) != "/") $sJsURI .= "/";
        $html .= "\t<script type=\"text/javascript\" src=\"" . $sJsURI . $sJsFile . "\"></script>\n";
        return $html;
    }

}

/**
 * get original request data from GET POST
**/
if(!function_exists('get_original_data'))
{
    function get_original_data($data)
    {
        if($data)
        {
            if(get_magic_quotes_gpc())
            {
                if (is_array($data))
                {
                    foreach($data as $key=>$value)
                    {
                        $data[$key] = get_original_data($value);
                    }
                }
                else
                {
                    $data = stripslashes($data);
                }
            }
        }
        return $data;
    }
}

?>



и вот JS 

Код

/**
* @author RainChen @ Fri Jul 28 17:06:37 CST 2006
* @uses xajax file upload extend
* @access public
* @param null
* @return null
* @version 0.1 
*/
function xajax_extend()
{
    if(typeof(xajax) == 'undefined')
    {
        return false;
    }
    
    xajax.newSessionID = function()
    {
        var sessionID;
        sessionID = new String(new Date().getTime());
        var random = new String(Math.random( )).substr(2);
        sessionID = sessionID + random;
        return sessionID;
    }
    
    xajax.setStatusMessages = function(msg)
    {
        window.status = msg;
    }
    
    var loadingTimeout;

    xajax.upload = function(rpcFunc,formID,url)
    {
        //alert(rpcFunc + " | " + formID + " | " + divID + " | " + field1Id + " | " + field2Id + " | " + url);
        var form = xajax.$(formID);
        if(!form)
        {
            return false;
        }
        var newSessionID = xajax.newSessionID();
        // init status
        if (document.body && xajaxWaitCursor)
            document.body.style.cursor = 'wait';
        if (xajaxStatusMessages == true) xajax.setStatusMessages('Sending Request...');
        clearTimeout(loadingTimeout);
        loadingTimeout = setTimeout("xajax.loadingFunction();",400);
        if (xajaxDebug) xajax.DebugMessage("Starting xajax...");
        if(!url)
        {
            url = xajaxRequestUri;
        }
        var separator = '?';
        if(url.indexOf('?') != -1)separator = '&';
        url += separator + 'xajax='+encodeURIComponent(rpcFunc);
        url += "&xajaxr=" + new Date().getTime();
        // get the upload file local path
        var formItem;
        var nodeName;
        for(var i=0; i<form.getElementsByTagName('input').length; i++)
        {
            formItem = form.elements[i];
            nodeName = new String(formItem.nodeName).toLowerCase();
            if(formItem.name == '' || nodeName == 'button')
            {
                continue;
            }
            if(formItem.type == 'file')
            {
                url += '&'+formItem.name+'='+encodeURIComponent(formItem.value);
            }
        }
        form.action = url;
        
        var iframeName = form.id + newSessionID;
        var iframe;
        if((iframe = xajax.$(iframeName)))
        {
            document.body.removeChild(iframe);
        }
        iframe = xajax.createIframe(iframeName,iframeName);
        form.target = iframeName;
        var xmlDoc;
        var responseXML;
        if(typeof iframe.onreadystatechange == 'object') // for IE
        {
            iframe.onreadystatechange = function()
            {
                if(iframe.readyState == 'complete' && !iframe.loaded)
                {
                    // IE load twice (bug or feature?)
                    iframe.loaded = true;
                    xmlDoc = document.frames(iframe.id);
                    if(xmlDoc.window.document.location != iframe.src)
                    {
                        responseXML = xmlDoc.window.document.XMLDocument;
                        xajax.uploadResponse(responseXML,iframe, xmlDoc);
                    }
                }
            }
        }
        else // for FF
        {
            iframe.onload = function()
            {
                xmlDoc = iframe.contentWindow;
                //alert(iframe.contentWindow.name);
                //alert(xmlDoc.window.document.location + " | " +  iframe.src);
                if(xmlDoc.window.document.location != iframe.src)
                {
                    // my share - must be something different than iframe elso no fully functional
                    var iframe1 = xajax.createIframe('xajax_stub_iframe','xajax_stub_iframe');
                    // transfering problem - form problem
                    //xajax_FormOriginalCopy(divID,formID,field1Id,field2Id);
                    // orig code
                    responseXML = xmlDoc.document;
                    xajax.uploadResponse(responseXML,iframe, xmlDoc);
                }
            }
        }
    }
    
    xajax.uploadResponse = function(responseXML,iframeObj, xmlDoc)
    {
        // response the xml
        var error=false;
        if(responseXML)
        {
            try
            {
                xajax.processResponse(responseXML);
            }
            catch(e)
            {
                error = true;
                //xajax.DebugMessage(e.description);
            }
        }
        else
        {
            error = true;
        }
        if(error)
        {
            var responseText = new String(xmlDoc.document.body.innerHTML);
            var errorString = "Error: the XML response that was returned from the server is invalid.";
            errorString += "\nReceived:\n" + responseText;
            trimmedResponseText = responseText.replace( /^\s+/g, "" );// strip leading space
            trimmedResponseText = trimmedResponseText.replace( /\s+$/g, "" );// strip trailing
            if (trimmedResponseText != responseText)
                errorString += "\nYou have whitespace in your response.";
            xajax.DebugMessage(errorString);
            document.body.style.cursor = 'default';
            if (xajaxStatusMessages == true) xajax.setStatusMessages('Invalid XML response error');
        }
        // remove the iframe after response
        document.body.removeChild(iframeObj);
        iframeObj = null;
    }
    
    xajax.createIframe = function(name,id)
    {
        var iframe;
        if(!id)
        {
            id = '';
        }
        if(document.all && navigator.appName == "Microsoft Internet Explorer") // for IE
        {
            iframe = document.createElement('<iframe id="'+id+'" name="'+name+'">');
        }
        else // for FF
        {
            iframe = document.createElement('iframe');
            iframe.id = id;
            iframe.name = name;
        }
        iframe.width = '0';
        iframe.height = '0';
        iframe.style.display = 'none';
        iframe.scrolling = 'no';
        iframe.src = 'about:blank';
        document.body.appendChild(iframe);
        return iframe;
    }
}
xajax_extend();


Это сообщение отредактировал(а) helflip - 17.10.2007, 07:01
--------------------
 
PM MAIL   Вверх
helflip
  Дата 17.10.2007, 15:24 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 14.5.2006
Где: Moscow

Репутация: 2
Всего: 4



Короче ни кто мне не помог, пришлось самому делать!

Кому надо качайте, ни какй бд, ни каких настроек, просто кидайте на сервак и аплоад готов! все файлы сохраняются в папку file!

Пользуйтесь на здоровье! smile 


Присоединённый файл ( Кол-во скачиваний: 107 )
Присоединённый файл  xAjax_File_Upload_by_FlipDevil.rar 97,68 Kb
--------------------
 
PM MAIL   Вверх
Empirik
Дата 18.10.2007, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 28.10.2005
Где: Россия, Пермь

Репутация: нет
Всего: 1



Спасибо, твой код помог +1 к репутации
--------------------
Постоянно удивляюсь человеческой фантазии напридумывают гаджетов
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0506 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.