Я в настоящее время ищу HTML5 и загрузчик файлов на основе Javascript и наткнулся на загрузку файла jQuery. Загрузка файла jQuery, похоже, имеет все, что мне нужно. https://blueimp.github.io/jQuery-File-Upload/basic.htmljQuery Загрузка файла, включение двоичного файла
Чтобы быстро проверить возможности загрузки файлов jQuery в связи с Django, мне посчастливилось найти проект «django-jquery-file-upload» на GitHub. Этот пример отлично работает с файлами изображений gif, jpeg и png.
Проблема:
Я требую JQuery File Upload позволяет пользователям загружать бинарные файлы с мим типов «приложения/октет потока» и с расширением «АБВ». Кроме того, я хочу увеличить максимальный размер загружаемого файла до 30 МБ. На первый взгляд все это кажется довольно прямо вперед, так как JQuery загрузки файлов поставляется с «acceptFileTypes» и «MaxFileSize» свойства. Однако эти свойства почему-то не принимаются во внимание. В течение нескольких часов я не устраивал работу. Я также попытался выполнить большинство предложений, предоставленных с помощью stackoverflow.com/questions/17451629/maxfilesize-and-acceptfiletypes-in-blueimp-file-upload-plugin-do-not-work-why
Как я могу получить базовый пример f («picture_basic_form.html») на github.com/sigurdga/django-jquery-file-upload, чтобы включить его для загрузки «application/octet-stream»?
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<!-- The jQuery UI widget factory, can be omitted if jQuery UI is already included -->
<script src="{{ STATIC_URL }}js/vendor/jquery.ui.widget.js"></script>
<!-- The Iframe Transport is required for browsers without support for XHR file uploads -->
<script src="{{ STATIC_URL }}js/jquery.iframe-transport.js"></script>
<!-- The basic File Upload plugin -->
<script src="{{ STATIC_URL }}js/jquery.fileupload.js"></script>
<!-- Bootstrap JS is not required, but included for the responsive demo navigation -->
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<script src="{{ STATIC_URL }}js/jquery.cookie.js"></script>
<script>
/*jslint unparam: true */
/*global window, $ */
function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$(function() {
'use strict';
// Change this to the location of your server-side upload handler:
var url = '/upload/basic/';
var csrftoken = $.cookie('csrftoken');
$('#fileupload').fileupload({
url: url,
crossDomain: false,
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type)) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
},
dataType: 'json',
done: function (e, data) {
$.each(data.result.files, function (index, file) {
$('<p/>').text(file.name).appendTo('#files');
});
},
progressall: function (e, data) {
var progress = parseInt(data.loaded/data.total * 100, 10);
$('#progress .progress-bar').css(
'width',
progress + '%'
);
}
}).prop('disabled', !$.support.fileInput)
.parent().addClass($.support.fileInput ? undefined : 'disabled');
});
</script>
Возможно, это пробная версия на стороне сервера, так как я не вижу ничего, что может ограничить загрузку файла в вашем коде, а также из демонстрации JQUEY UI: «В этой демонстрации разрешены только файлы изображений (JPG, GIF, PNG) (по умолчанию не существует ограничения на тип файла). ' – Razorphyn
Плюс js для проверки соответствия или расширения не является надежным, так как они ненадежны и подвержены всплеску, плюс у вас проблемы. Я бы опирался только на php – Razorphyn