5

Webサイトのカスタムサンプルに基づくpl​​uploadインスタンスがありますが、サーバー側のアップロードスクリプト(ダウンロードのexamplesフォルダーからのupload.php)からのエラーメッセージを表示することを除いて、問題なく動作しています。

ローカルエラーメッセージが表示されています。たとえば、制限されているファイルタイプをアップロードしようとすると、予期したエラーメッセージが表示されますが、サーバー側のメッセージが表示されません。

アップロードが正常に処理されたため、upload.phpファイルが適切にトリガーされていることを知っています。また、ファイルが要求されていることを確認するためにスリープ機能を設定しました。現時点では、upload.phpの上部にある行に配置して、10秒間スリープし、エラーメッセージを返すデバッグを支援していますが、これはまだ機能しません。

upload.php
    sleep(10);
    die('{"jsonrpc" : "2.0", "error" : {"code": 500, "message": "THIS IS AN ERROR."}, "id" : "id"}');
...(Rest of normal upload.php file)...

私が使用しているJavaScriptは以下に含まれています。私はすでにこれに長い時間を費やしており、問題が私のコードをライブでプッシュすることを妨げているので、皆さんが提供できる助けをいただければ幸いです。

ありがとう、

アレックス

// Fanart
$(function() {
var fanart_uploader = new plupload.Uploader({
    runtimes : 'html5,flash,html4',
    browse_button : 'fanart_pickfiles',
    container : 'fanart_container',
    drop_element : 'fanart_drop',
    chunk_size : '1mb',
    max_file_size : '8mb',
    url : '/upload.php?gameid=<?= $gameid ?>&arttype=fanart',
    flash_swf_url : '/js/plupload/js/plupload.flash.swf',
    silverlight_xap_url : '/js/plupload/js/plupload.silverlight.xap',
    filters : [
        {title : "Image files", extensions : "jpg,png"},
    ]
});

fanart_uploader.bind('Init', function(up, params) {
    $('#fanart_runtime').html("You are using " + params.runtime);
});

$('#fanart_uploadfiles').click(function(e) {
    fanart_uploader.start();
    e.preventDefault();
});

fanart_uploader.init();

fanart_uploader.bind('FilesAdded', function(up, files) {
    $.each(files, function(i, file) {
        $('#fanart_filelist').append(
            '<div style="padding: 4px; margin: 3px; border: 1px dotted #fff; border-radius: 6px; background-color: #333;" id="' + file.id + '"><img class="tick" src=\"<?= $baseurl ?>/images/common/icons/tick_16.png\" style=\"display: none; vertical-align: -2px;\" />' +
            file.name + ' <em>(' + plupload.formatSize(file.size) + ')</em> <div style=\"margin: auto; margin-top: 3px; width: 200px; height: 20px; border: 1px solid #fff; border-radius: 6px; background-color: #222;\"><div class="progressbar" style=\"width: 0px; height: 16px; padding: 2px 0px; background-color: #ccc; border-radius: 6px; text-align: center;\"><b style="font-size: 16px; color: #222;"></b></div></div>' +
        '</div>');
    });

    up.refresh(); // Reposition Flash/Silverlight
});

fanart_uploader.bind('UploadProgress', function(up, file) {
    $('#' + file.id + " b").html(file.percent + "%");
    $('#' + file.id + " .progressbar").css("width", (file.percent * 2));
});

fanart_uploader.bind('Error', function(up, err) {
    $('#fanart_filelist').append("<div>Error: " + err.code +
        ", Message: " + err.message +
        (err.file ? ", File: " + err.file.name : "") +
        "</div>"
    );

    up.refresh(); // Reposition Flash/Silverlight
});

fanart_uploader.bind('FileUploaded', function(up, file) {
    $('#' + file.id + " .tick").show();
});
});
4

1 に答える 1

10

そして、これがあなたがリンクした答えです:

NM、私自身の質問に答えました...

私のplUploadインスタンスは、JSON文字列であるサーバー応答を「FileUploaded」イベントを介してアクセスできるJSオブジェクトに解放しているようです。

これは、この回答が必要な他の人のためのコード例です。

fanart_uploader.bind('FileUploaded', function(up, file, info) {
    $('#' + file.id + " .tick").show();
    printObject(info);

    var response = jQuery.parseJSON(info.response);

    alert(response.error.message);
});
于 2012-05-25T01:33:38.867 に答える