尝试上传文件时“无法更改上传处理程序”

时间:2011-03-10 11:11:23

标签: python ajax django

我正在尝试使用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")

该代码出了什么问题?

1 个答案:

答案 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")