Обработка ошибок с помощью swfupload - PullRequest
1 голос
/ 03 января 2012

Я не собираюсь этого делать. Я начал с образца, найденного в пакете загрузки, и отредактировал его для своих нужд. Я произвел проверку расширения в скрипте файла php-сервера, поэтому, если расширение отсутствует в белом списке, скрипт завершается с ошибкой. Я не знаю, как заставить работать нестандартное сообщение.

Есть функция php

function HandleError($message) {
    header("HTTP/1.1 500 Internal Server Error");
    echo $message;
}

Но это возвращает только 500 вместо $ сообщения! Это JS uploadError()

function uploadError(file, errorCode, message) {
try {
    var progress = new FileProgress(file, this.customSettings.progressTarget);
    progress.setError();
    progress.toggleCancel(false);

    switch (errorCode) {
    case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
        progress.setStatus("Errore upload: " + message);
        this.debug("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message);
        break;
    case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
        progress.setStatus("Upload fallito.");
        this.debug("Error Code: Upload Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
        break;
    case SWFUpload.UPLOAD_ERROR.IO_ERROR:
        progress.setStatus("Errore Server (IO)");
        this.debug("Error Code: IO Error, File name: " + file.name + ", Message: " + message);
        break;
    case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
        progress.setStatus("Errore Security");
        this.debug("Error Code: Security Error, File name: " + file.name + ", Message: " + message);
        break;
    case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
        progress.setStatus("Limite upload superato.");
        this.debug("Error Code: Upload Limit Exceeded, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
        break;
    case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
        progress.setStatus("File non valido.  Upload ignorato.");
        this.debug("Error Code: File Validation Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
        break;
    case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
        // If there aren't any files left (they were all cancelled) disable the cancel button
        if (this.getStats().files_queued === 0) {
            document.getElementById(this.customSettings.cancelButtonId).disabled = true;
        }
        progress.setStatus("Cancellato.");
        progress.setCancelled();
        break;
    case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
        progress.setStatus("Sospeso.");
        break;
    default:
        progress.setStatus("Errore non gestito: " + errorCode);
        this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
        break;
    }
} catch (ex) {
    this.debug(ex);
}

Если я закомментирую функцию header(), она отобразит ошибку в индикаторе выполнения (yay), но обработает ее как успешную, и это не значит, что я должен обработать ее с ошибкой. С удаленным header() сценарием js перейдите на uploadSuccess вместо uploadError.
Документация действительно ужасная, и больше ничего не нахожу.

1 Ответ

3 голосов
/ 30 октября 2012

Удалите заголовок, а затем добавьте exit(0) после echo $message.Я думаю, что это решит проблему.

...