Я хочу изменить общий серый цвет фона для файлов word/pdf в предварительном просмотре файла dropzone. Это представление по умолчанию:
Каков наилучший способ сделать это?
Я хочу изменить общий серый цвет фона для файлов word/pdf в предварительном просмотре файла dropzone. Это представление по умолчанию:
Каков наилучший способ сделать это?
Вот как я это сделал наконец:
myAwesomeDropzone.on('addedfile', function(file) {
var ext = file.name.split('.').pop();
if (ext == "pdf") {
$(file.previewElement).find(".dz-image img").attr("src", "/Content/Images/pdf.png");
} else if (ext.indexOf("doc") != -1) {
$(file.previewElement).find(".dz-image img").attr("src", "/Content/Images/word.png");
} else if (ext.indexOf("xls") != -1) {
$(file.previewElement).find(".dz-image img").attr("src", "/Content/Images/excel.png");
}
});
Изображения должны быть 120x120 пикселей, чтобы соответствовать шаблону предварительного просмотра по умолчанию.
Это результат:
Я нашел простой способ сделать это сейчас. Обратите внимание: я am, используя jQuery, поэтому обязательно включите это.
Прежде всего, убедитесь, что у вашей Dropzone есть id
. Мина myAwesomeDropzone
:
<form id="myAwesomeDropzone" action="/upload-target" class="dropzone"></form>
Во-вторых, создайте значки изображений для каждого типа файла, который вы хотите включить. Я нашел значки для PDF и Word и поместил их в каталог под названием img
.
Затем включите следующий JavaScript:
// Make sure to use YOUR Dropzone ID below...
Dropzone.options.myAwesomeDropzone = {
accept: function(file, done) {
var thumbnail = $('.dropzone .dz-preview.dz-file-preview .dz-image:last');
switch (file.type) {
case 'application/pdf':
thumbnail.css('background', 'url(img/pdf.png');
break;
case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':
thumbnail.css('background', 'url(img/doc.png');
break;
}
done();
},
};
Код выше будет работать для PDF и Word. Если вы хотите добавить еще, просто добавьте еще case
в оператор switch
, используя этот шаблон:
case '[mime type]':
thumbnail.css('background', 'url(img/[icon filename]');
break;
Обратите внимание, что вы можете найти тип mime, добавив console.log(file.type);
в функцию accept
, затем отбросьте тестовый файл и проверьте консоль своего браузера.
Dropzone позволяет вам настроить dropzone с помощью объекта конфигурации в форме Dropzone.options.[your dropzone id]
. Одним из вариантов является функция accept
, которая запускается до того, как файл будет принят. Вы можете использовать этот первый параметр функции, чтобы шпионить за входящим файлом.
Этот параметр имеет такие свойства, как type
, который может указать вам тип mime. Как только вы узнаете тип mime, вы можете изменить фоновое изображение элемента с помощью CSS. Наш элемент всегда будет $('.dropzone .dz-preview.dz-file-preview .dz-image:last')
, так как мы всегда хотим настроить таргетинг на последний файл dropzone. Просто измените фоновое изображение на соответствующий значок. Например, любой из этих будет работать для PDF.
Используйте это:
this.emit("thumbnail", file, "/WebResources/cre_pdf_icon");
или
myDropzone.emit("thumbnail", file, "/WebResources/cre_pdf_icon");
В итоге я использовал вариацию ответа @Gabriel
Dropzone.options.myAwesomeDropzone= {
init: function () {
this.on("addedfile", function (data) {
console.log(data);
var ext = data.name.split('.').pop();
if (ext == "pdf") {
$(data.previewElement).find(".dz-image img").attr("src", "/Content/Images/pdf.png");
} else if (ext.indexOf("doc") != -1) {
$(data.previewElement).find(".dz-image img").attr("src", "/Content/Images/word.png");
} else if (ext.indexOf("xls") != -1) {
$(data.previewElement).find(".dz-image img").attr("src", "/Content/Images/excel.png");
} else if (ext.indexOf("xlsx") != -1) {
$(data.previewElement).find(".dz-image img").attr("src", "/Content/Images/excel.png");
}
});
}
};