无法获得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

回到顶部