如何在Django 1.8中正确获取FormData值?显然,当我尝试在控制台上查看它时,它具有数据,但是以某种方式无法通过Django视图访问它。这是我的客户端代码:
reader.addEventListener("loadend", function() {
var imgsrc = reader.result;
storedFiles.push(imgsrc);
var html = "<div class=\"col text-center\"><img src=\"" + imgsrc + "\" data-file='" + f.name + "' class='img-fluid selFile' title='Click to remove'><br/>" + i + "</div>";
selDiv.append(html);
//call extract text
var formdata = new FormData();
formdata.append("image", imgsrc);
console.log(formdata.get("image"));
$.ajax({
crossDomain: true,
type: "GET",
data: formdata,
dataType: 'json',
processData: false,
contentType: "multipart/form-data",
url: "/scan/scanner",
beforeSend: function() {
},
success: function(response) {
var parseResp = JSON.parse(response);
$("#extracted_text").append(parseResp.extracted_txt);
},
error: function(e) {
alert(e.statusText);
}
});
}, false);
以及Django中的一个简单视图:
def callWebScanner(request):
print 'Django View'
imgstring = request.FILES.get("image")
print imgstring
我设法做到以下几点:
POST
这会导致Django中的csrf令牌错误,我必须在视图上添加@csrf_exempt
装饰器。var formdata = new FormData(); formdata.append("image", blob, "File" + i);
blob = request.FILES['image']
。然后可以将图像保存在MEDIA_ROOT
分配的目录上:blob = request.FILES['image'] unique_id = get_random_string(length=16) filename = unique_id+'.PNG' default_storage.save(filename, ContentFile(blob.read())) scanned_img = default_storage.path(filename) print scanned_img