我正在尝试使用Django中的uploadhandler上传文件。但它正在返回错误:
处理完上传后,您无法更改上传处理程序
代码:
def upload_form(request):
if request.method == 'POST':
outPath = '/opt/workspace/jup2/juppro/uploads/23232'
if not os.path.exists(outPath):
os.makedirs(outPath)
request.upload_handlers.insert(0, ProgressUploadHandler(request, outPath)) # place our custom upload in first position
upload_file = request.FILES.get('file', None) # start the upload
return HttpResponse("uploaded ok")
该代码出了什么问题?
答案 0 :(得分:0)
您必须在开始上传之前定义uploadhandler。您可以访问request.POST文件已经全部上传到内存或临时文件。这使得上传处理程序定义毫无意义,因为上传已经完成。
Django docs非常清楚何时定义自定义上传处理程序:“您只能在访问request.POST或request.FILES之前修改上传处理程序 - 在上传处理已经开始后更改上传处理程序没有意义“。我不知道你的代码我只能猜测,但我认为将代码修改为以下内容应该足够了:
def upload_form(request):
outPath = '/opt/workspace/jup2/juppro/uploads/23232'
if not os.path.exists(outPath):
os.makedirs(outPath)
request.upload_handlers.insert(0, ProgressUploadHandler(request, outPath)) # place our custom upload in first position
if request.method == 'POST':
upload_file = request.FILES.get('file', None) # start the upload
return HttpResponse("uploaded ok")