плагин jquery 'uploadify' - способ вернуть ответ из скрипта загрузки? - PullRequest
5 голосов
/ 01 ноября 2010

Код моего заголовка:

$(document).ready(function() {
    $('#sampleFile').uploadify({
        'uploader': 'include/uploadify/uploadify.swf',
        'script': 'add_list.php',
        'scriptData': {'mode': 'upload'},
        'fileDataName': 'sampleFile',
        'folder': '/work/avais/bizlists/lists',
        'cancelImg': 'include/uploadify/cancel.png',
        'queueID': 'sampleQueue'
    });
});

AFAIK Все, что я могу сделать в файле "add_list.php", - завершить процесс загрузки, переместив файл в последний каталог; Я не думаю, что есть какой-то способ, которым я могу «вернуть что-то», например, об ошибке, верно?

Было бы хорошо, если бы я мог использовать этот файл также, чтобы запретить определенные символы или вернуть ошибку, если была какая-то проблема, но я не думаю, что есть?

Полагаю, я мог бы просто удалить любые плохие символы, но было бы полезно узнать, могу ли я как-нибудь вернуть ответ?

Ответы [ 4 ]

7 голосов
/ 01 ноября 2010

Вы можете добавить некоторые обработчики событий в свой скрипт выгрузки, чтобы проверить завершенность действия и наличие ошибки

$('#sampleFile').uploadify({
        'uploader': 'include/uploadify/uploadify.swf',
        'script': 'add_list.php',
        'scriptData': {'mode': 'upload'},
        'fileDataName': 'sampleFile',
        'folder': '/work/avais/bizlists/lists',
        'cancelImg': 'include/uploadify/cancel.png',
        'queueID': 'sampleQueue'

    onComplete: function (event, queueID, fileObj, response, data) {
        // A function that triggers when a file upload has completed. The default 
        // function removes the file queue item from the upload queue. The 
        // default function will not trigger if the value of your custom 
        // function returns false.
        // Parameters 
        //    event: The event object.
        //    queueID: The unique identifier of the file that was completed.
        //    fileObj: An object containing details about the file that was selected.
        //    response: The data sent back from the server.
        //    data: Details about the file queue.
    },

    onError: function (event, queueID, fileObj, errorObj) {
        // A function that triggers when an error occurs during the upload process. 
        // The default event handler attaches an error message to the queue item 
        // returning the error and changes it's queue item container to red.
        // Parameters 
        //    event: The event object.
        //    queueID: The unique identifier of the file that was errored.
        //    fileObj: An object containing details about the file that was selected.
        //    errorObj: An object containing details about the error returned.
    }

});

Таким образом, поскольку функция onComplete будет возвращать ответ от сценария на стороне сервера, вы можетеверните ответ клиенту и затем проанализируйте ответ в обработчике событий.

Проверьте Uploadify документацию для получения более подробной информации

Надеюсь, это поможет

1 голос
/ 01 ноября 2010

Все, что отражено в вашем файле add_list.php, отправляется в функцию onComplete как ответ. Таким образом, вы можете сделать следующее:

$(document).ready(function() {
$('#sampleFile').uploadify({
    'uploader': 'include/uploadify/uploadify.swf',
    'script': 'add_list.php',
    'scriptData': {'mode': 'upload'},
    'fileDataName': 'sampleFile',
    'folder': '/work/avais/bizlists/lists',
    'cancelImg': 'include/uploadify/cancel.png',
    'queueID': 'sampleQueue',
    'onComplete' : function(event,ID,fileObj,response,data) {
         alert(response);
      }
    });
});
0 голосов
/ 31 октября 2012

Всем, кто может столкнуться с этим в будущем.Мне понадобилось немного времени, чтобы понять, как передать свои собственные данные обратно с сервера.

Текущая версия uploadify на момент написания этой статьи - 3.2, и вы, вероятно, ищете событие onUploadSuccess: http://www.uploadify.com/documentation/uploadify/onuploadsuccess/

Это позволит вам получать возвращенные данные с сервера.

0 голосов
/ 03 ноября 2010

Если вам нужно имя файла, вы должны «использовать» (правильный метод) fileObj.name:

$(document).ready(function() {
$('#sampleFile').uploadify({
    'uploader': 'include/uploadify/uploadify.swf',
    'script': 'add_list.php',
    'scriptData': {'mode': 'upload'},
    'fileDataName': 'sampleFile',
    'folder': '/work/avais/bizlists/lists',
    'cancelImg': 'include/uploadify/cancel.png',
    'queueID': 'sampleQueue',
    'onComplete' : function(event,ID,fileObj,response,data) {
         alert(fileObj.name);
      }
    });
});
...