request.FILES 为空,但表单标记包含多部分数据加密
request.FILES is empty though form tag contains multipart data encryption
我正在尝试从前端 HTML 表单将文件上传到数据库。这是代码:
createuser.html
<form method="POST" enctype="multipart/form-data" action="">
<input type="file" name="myfile">
<input type="submit">
</form>
views.py
@login_required(login_url='login')
def createuser(request):
authority = Authority.objects.only('authority')
designation = Authority.objects.only('designation')
if request.method == 'POST':
if request.POST:
post = CustomUser()
post.first_name = request.POST.get('first_name')
post.middle_name = request.POST.get('middle_name')
post.last_name = request.POST.get('last_name')
post.emp_code = request.POST.get('emp_code')
post.email = request.POST.get('email')
passwrd = request.POST.get('password')
post.password = make_password(passwrd)
post.joining_date = request.POST.get('joining_date')
# post.authority = request.POST.get('authority')
# post.designation = Designation.objects.get(designation=request.POST.get('designation'))
post.language = request.POST.getlist('lang')
post.address = request.POST.get('address')
post.education = request.POST.get('education')
post.blood_group = request.POST.get('blood_group')
post.emergency_contact = request.POST.get('emergency_contact')
post.relation = request.POST.get('relation')
post.created_by = request.user
myfile = request.FILES['myfile']
# generates multivalue dict error as multivalueDict is empty
print(myfile)
# fs = FileSystemStorage()
# filename = fs.save(myfile.name, myfile)
# uploaded_file_url = fs.url(filename)
# print(uploaded_file_url)
post.save()
s = '/usermanage/userdashboard'
return redirect(s)
userforminfo = CreateUser.objects.all()
return render(request, 'usermanage/createuser.html', context={"userforminfo": userforminfo, "authority":authority, "designation":designation})
输出
输出必须是我正在选择的文件。有什么办法可以解决这个问题吗?
我遇到过类似的问题,这里我的问题是我在 Rest API.
中直接传递了没有 FormData
的文件数据
var formData = new FormData();
Array.from(files).forEach(f => formData.append('file', f))
使用上面的代码,我将 FormData
传递给 POST API,我的问题得到解决。
我正在尝试从前端 HTML 表单将文件上传到数据库。这是代码:
createuser.html
<form method="POST" enctype="multipart/form-data" action="">
<input type="file" name="myfile">
<input type="submit">
</form>
views.py
@login_required(login_url='login')
def createuser(request):
authority = Authority.objects.only('authority')
designation = Authority.objects.only('designation')
if request.method == 'POST':
if request.POST:
post = CustomUser()
post.first_name = request.POST.get('first_name')
post.middle_name = request.POST.get('middle_name')
post.last_name = request.POST.get('last_name')
post.emp_code = request.POST.get('emp_code')
post.email = request.POST.get('email')
passwrd = request.POST.get('password')
post.password = make_password(passwrd)
post.joining_date = request.POST.get('joining_date')
# post.authority = request.POST.get('authority')
# post.designation = Designation.objects.get(designation=request.POST.get('designation'))
post.language = request.POST.getlist('lang')
post.address = request.POST.get('address')
post.education = request.POST.get('education')
post.blood_group = request.POST.get('blood_group')
post.emergency_contact = request.POST.get('emergency_contact')
post.relation = request.POST.get('relation')
post.created_by = request.user
myfile = request.FILES['myfile']
# generates multivalue dict error as multivalueDict is empty
print(myfile)
# fs = FileSystemStorage()
# filename = fs.save(myfile.name, myfile)
# uploaded_file_url = fs.url(filename)
# print(uploaded_file_url)
post.save()
s = '/usermanage/userdashboard'
return redirect(s)
userforminfo = CreateUser.objects.all()
return render(request, 'usermanage/createuser.html', context={"userforminfo": userforminfo, "authority":authority, "designation":designation})
输出
输出必须是我正在选择的文件。有什么办法可以解决这个问题吗?
我遇到过类似的问题,这里我的问题是我在 Rest API.
中直接传递了没有FormData
的文件数据
var formData = new FormData();
Array.from(files).forEach(f => formData.append('file', f))
使用上面的代码,我将 FormData
传递给 POST API,我的问题得到解决。