Это сообщение выглядит многообещающим, но я не могу понять, что такое blobFile
в коде? Где я могу получить эту переменную?Загрузка файла HTML5: что должно быть добавлено к FormData
How to upload a file using jQuery.ajax and FormData
Дополнительный вопрос:
Я предполагаю, что FormData
объект содержит данные в ВСЕХ полей ввода включая ввода имени файла. Но это не так. В противном случае нам не нужно добавлять данные файла в FormData
. Может ли кто-нибудь объяснить, почему входной файл не включен в FormData
?
Кроме того, я использую бэкэнд Django, который по конвенциональному доступу загружает файлы в request.FILES
. Как я могу поместить данные файла в request.FILES
, а не request.POST
с $.ajax()
?
EDIT Я просто понял, что НИЧЕГО в моем request.POST
и formData
в пустой. не могу понять, почему .. Вот соответствующий код:
// HTML
<form action="" method="POST" enctype="multipart/form-data">{% csrf_token %}
<span class='file-name' id='file-name-1'>FILE 1</span>
<input type="file" id='id_image'>
<input class="browse-click" type="button" value="+"/>
<input id="send" type="submit" value="change">
</form>
// JS
<script>
// when button is clicked, the file browser opens
$('.browse-click').on("click" , function() {
$('#id_image').click();
});
// upload file async when file is selected in file browser
$('#id_image').on('change', function() {
var currentpath = window.location.pathname;
var formData = new FormData($('form')[0]);
formData.append('csrfmiddlewaretoken', '{{ csrf_token }}');
$.ajax({
url: currentpath, //server script to process data
type: 'POST',
xhr: function() { // custom xhr
var myXhr = $.ajaxSettings.xhr();
if(myXhr.upload){ // check if upload property exists
myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // for handling the progress of the upload
}
return myXhr;
},
data: formData,
cache: false,
contentType: false,
processData: false
});
});
function progressHandlingFunction(e){
if(e.lengthComputable){
$('progress').attr({value:e.loaded,max:e.total});
}
}
</script>
Не могли бы вы привести пример кода? Я использую 'var formData = new FormData ($ ('form') [0]);', но по-прежнему не получает никакой загрузки файла по запросу. ПОСЛЕ. не знаю, что пойдет не так – Philip007
@ Philip007 есть ли какие-либо другие формы в документе? Также покажите форму html и js, используемые для ajax. – Musa
Нет, это не единственная форма. Но это первая форма в html. Разве это не '$ ('form') [0]' относится? Также я размещаю код в редакции. – Philip007