我有一个代码,代码运行良好,此代码的问题是它在文件上传时没有获取文件名。
views.py
@csrf_exempt
def upload_file(request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
handle_uploaded_file(request.FILES['file'])
if 'filename' in request.FILES:
filename = request.FILES['filename']
else:
return HttpResponseRedirect('/user_profileform/')
else:
form = UploadFileForm()
return render_to_response('user_profile.html', {'form': form })
def handle_uploaded_file(f):
destination = open('media/name', 'wb+')
for chunk in f.chunks():
destination.write(chunk)
destination.close()
我的表格是: -
<form action="/user_profileform/" method="POST" enctype="multipart/form-data" name="uform" id="userform">{% csrf_token %}
{{form}}
<input type="submit" value="submit" name="usubmit">
</form>
使用此文件时,文件正确上传但未获得文件名,为什么。
答案 0 :(得分:2)
问题可能是您尝试从request.FILES
字典中读取文件名。此字典包含表单中每个文件上载字段的UploadedFile
对象。文件名是该UploadedFile
对象的属性。试试这个:
if request.FILES['file'].name:
filename = request.FILES['file'].name
如果这不起作用,请告诉我们您的实际表单以及您尝试使用文件名的代码。