Я читаю в файле через HTML5 FileReader и jQuery следующим образом:
holder.ondrop = function(e) {
this.className = '';
e.preventDefault();
var file = e.dataTransfer.files[0],
reader = new FileReader();
reader.onloadend = function(event) {
$.ajax({
url:"/path/to/upload",
type: "POST",
data: event.target.result,
success: function(data, status, xhr) {
alert("success!");
},
error: function(xhr, status, error) {
alert("fail")
},
});
};
reader.readAsBinaryString(file);
return false;
};
«Ondrop» используется для обработки перетаскивания элемента, который я назвал «holder».
Файл передается в мое приложение django, и если я просто
print request.raw_post_data
, я вижу двоичный вывод в моей консоли.
Я пытаюсь записать это в файл примерно так (да, в моем тесте это всегда jpg):
f = open('/tmp/file.jpg', 'wb')
f.write(request.raw_post_data)
f.close()
И файл пишется, но когда я пытаюсь открыть его, онкажется испорченным
Я подозреваю, что это связано с неправильным кодированием request.raw_post_data, но я не совсем уверен, как это исправить ... raw_post_data выглядит как двоичный файл, хотя type () возвращает str
Есть мысли?