FineUploader不显示错误消息

时间:2013-07-25 09:49:42

标签: javascript fine-uploader

如果已经实现了精细上传并且可以上传文件。我还将允许的扩展名设置为仅允许PDF。

但是当我尝试上传和jpg时,没有任何事情发生。

通常这不是问题,但我希望看到一条消息。这适用于fineuploader网站,但不适合我。

希望有人可以帮助我。

代码:

createUpload({ button: $('#dienstverleningsDocumentUploader'), 
endpoint:'/adviseur/profile/dienstverleningsDocument/' + '@Model.Adviseur.ServiceDocumentID',
messages: $('#dienstverleningsDocumentMessage'), allowedExtensions: ['pdf'] });

function createUpload(options) {
var button = options.button[0];//Should be a jQuery $(...)
var endpoint = options.endpoint;
var allowedExtensions = options.allowedExtensions || ['doc', 'xls', 'docx', 'xlsx', 'pdf'];
var sizeLimit = options.sizeLimit || 10000000;// 10Mb
var itemLimit = options.itemLimit || 10;
var messages = options.messages || $('#messages');
var complete = options.complete;

return new qq.FineUploaderBasic({
    button: button,
    request: {
        endpoint: endpoint
    },
    validation: {
        allowedExtensions: allowedExtensions,
        sizeLimit: sizeLimit,
        itemLimit: itemLimit
    },
    callbacks: {
        onSubmit: function (id, fileName) {
            messages.html('<div id="file-' + id + '" class="alert" style="margin: 20px 0 0"></div>');
        },
        onUpload: function (id, fileName) {
            $('#file-' + id).addClass('alert-info')
                            .html('<img src="client/loading.gif" alt="Initializing. Please hold."> ' +
                                  'Initializing ' +
                                  '“' + fileName + '”');
        },
        onProgress: function (id, fileName, loaded, total) {
            if (loaded < total) {
                progress = Math.round(loaded / total * 100) + '% of ' + Math.round(total / 1024) + ' kB';
                $('#file-' + id).removeClass('alert-info')
                                .html('<img src="client/loading.gif" alt="In progress. Please hold."> ' +
                                      'Uploading ' +
                                      '“' + fileName + '” ' +
                                      progress);
            } else {
                $('#file-' + id).addClass('alert-info')
                                .html('<img src="client/loading.gif" alt="Saving. Please hold."> ' +
                                      'Saving ' +
                                      '“' + fileName + '”');
            }
        },
        onComplete: function (id, fileName, responseJSON) {
            if (responseJSON.success) {
                $('#file-' + id).removeClass('alert-info')
                                .addClass('alert-success')
                                .html('<i class="icon-ok"></i> ' +
                                      '“' + fileName + '”' +
                                      'succesvol.'
                                      );
                if (complete) {
                    complete(fileName, responseJSON);
                }
            } else {
                $('#file-' + id).removeClass('alert-info')
                                .addClass('alert-error')
                                .html('<i class="icon-exclamation-sign"></i> ' +
                                      'Uploaden mislukt bij: ' +
                                      '“' + fileName + '”: ' +
                                      responseJSON.error);
            }
        }
    }
});
}

1 个答案:

答案 0 :(得分:0)

主页和文档明确指出Fine Uploader Basic模式根本不提供任何UI元素。如果您使用的是Fine Uploader Basic模式,则您需要构建自己的UI并使用Fine Uploader的API和回调。所有错误消息(例如验证错误)都将发送到onError回调。您可以贡献自己的onError回调处理程序并自己显示错误消息。

例如,假设您在应用中使用bootbox.js。您的实例可能如下所示:

$('#uploaderContainer').fineUploader({
    uploaderType: 'basic',
    button: $('#dienstverleningsDocumentUploader'),
    request: {
     endpoint: '/adviseur/profile/dienstverleningsDocument/' + '@Model.Adviseur.ServiceDocumentID',    
    },
    validation: {
        allowedExtensions: ['pdf'],
        sizeLimit: 10000000,
        itemLimit: 10
    } 
})
    .on('error', function(event, id, fileName, reason, maybeXhr) {
        bootbox.alert(reason);
    });

注意我在我的示例中使用了jQuery Fine Uploader插件。您也应该在项目中使用jQuery。有关此插件的详细信息,请参阅文档。

如果您想使用Fine Uploader附带的默认UI并稍微自定义它,您应该使用FineUploader模式。这也在文档中进一步解释。