【发布时间】:2020-07-22 19:05:06
【问题描述】:
我做了一个 api 来上传文件。为此,我使用了 Django 和 jQuery.ajax。我不知道如何阅读文件 这是我收到请求的 views.py 文件
def upload(request):
if request.method == 'POST':
print(request.FILES['image'].file)
data = request.FILES['image'].file.read()
print(type(data))
print(data)
# data.encode()
return JsonResponse(data={'message': 'recieved'})
这是我发送文件的 HTML 文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Home</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<form id="form">
{% csrf_token %}
<input type="file" id="inp-fld">
<button type="submit">....</button>
</form>
</body>
<script type="text/javascript">
const csrftoken = getCookie('csrftoken');
jQuery.noConflict();
formdata = new FormData();
jQuery("#inp-fld").on("change", function() {
var file = this.files[0];
if (formdata) {
formdata.append("image", file);
console.log(formdata)
jQuery.ajax({
beforeSend: function(xhr){
xhr.setRequestHeader('X-CSRFToken', csrftoken)
},
url: "/upload",
type: "POST",
data: formdata,
processData: false,
contentType: false,
success:function(data){
console.log(data)
}
});
}
});
function getCookie(name) {
let cookieValue = null;
if (document.cookie && document.cookie !== '') {
const cookies = document.cookie.split(';');
for (let i = 0; i < cookies.length; i++) {
const cookie = cookies[i].trim();
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
</script>
</html>
这是 request.files 的输出
<MultiValueDict: {'file': [<InMemoryUploadedFile: WIN_20190920_22_49_37_Pro.jpg (image/jpeg)>]}>
这是 (type(request.FILES.get('file').read())) 的输出
<class 'bytes'>
如何获取我上传的图片
我目前在图像处理和字节方面的想法和经验为 0
我只想将收到的文件转换为 jpg/jpeg
【问题讨论】:
标签: javascript jquery django ajax