无法获得request.FILES django
我想上传一个文本文件到我的django后端,但我的request.FILES
始终是空的。无法获得request.FILES django
我正在使用axios发送文件并按照django的要求将'multipart/form-data'作为请求的内容类型。
我缺少什么?
new Vue({ el: '#app',
data: {
reqtype: '',
uploadedFile: '',
},
methods: {
onSubmit(event) {
this.submitLoading = true;
if (! this.validateForm(this)) {
event.preventDefault();
this.submitLoading = false;
return;
}
var formData = new FormData();
formData.append("reqtype", this.reqtype)
formData.append('fileToUpload', this.uploadedFile)
axios.post('/sreqtool/tc/', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
})
},
onFileChange(e) {
var files = e.target.files || e.dataTransfer.files;
if (!files.length)
return;
var reader = new FileReader();
var vm = this;
reader.onload = (e) => {
vm.uploadedFile = e.target.result;
};
reader.readAsDataURL(files[0]);
}
},
}
在网络上请求有效载荷:
在我app.js我经由发送POST请求
------ WebKitFormBoundarymAnl54hGVTifZzwM内容处置:形状数据; NAME = “reqtype”
基于文件
------ WebKitFormBoundarymAnl54hGVTifZzwM内容处置:形状数据; NAME = “fileToUpload”
数据:text/plain的; BASE64,OTA1NTIzMzg2NQ0KOTE3NTAwMTU0Mg0KOTc3NDczNjcyNg0KMTIzNTQ2ODQ1Ng == ------ WebKitFormBoundarymAnl54hGVTifZzwM--
在我的views.py我有:
@csrf_exempt def index(request):
if request.method == 'POST':
DLOG.info(request.POST)
DLOG.info(request.FILES)
form = ExtractForm(request.POST, request.FILES)
if form.is_valid():
res = QueryManager.processRequest(request.user, form.cleaned_data)
DLOG是我的记录器,dlog的输出是:
[2017-12-18 16:51:06,510] INFO views index: <QueryDict: {u'fileToUpload': [u'data:text/plain;base64,OTA1NTIzMzg2NQ0KOTE3NTAwMTU0Mg0KOTc3NDczNjcyNg0KMT IzNTQ2ODQ1Ng=='], u'reqtype': [u'filebased']}>
[2017-12-18 16:51:06,512] INFO views index: <MultiValueDict: {}>
回答:
它说你的我法师编码为base64
{u'fileToUpload': [u'data:text/plain;base64,OTA1NTIzMzg2NQ0KOTE3NTAwMT...
回答:
我现在能够读取文件内容。
我用 stackoverflow answer
代码更新为从法鲁克的评论链接:
@csrf_exempt def index(request):
if request.method == 'POST':
form = ExtractForm(request.POST, request.FILES)
if form.is_valid():
res = QueryManager.processRequest(request.user, form.cleaned_data)
format, imgstr = data.split(';base64,')
ext = format.split('/')[-1]
data = ContentFile(base64.b64decode(imgstr), name='temp.' + ext)
filetext = data.read()
FILETEXT包含我从文件中需要的字符串。
以上是 无法获得request.FILES django 的全部内容, 来源链接: utcz.com/qa/261897.html