«Невозможно изменить обработчики загрузки» при попытке загрузить файл - PullRequest
2 голосов
/ 10 марта 2011

Я пытаюсь загрузить файл с помощью uploadhandler в Django.Но он возвращает ошибку:

Вы не можете изменить обработчики загрузки после обработки загрузки

Код:

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 голосов
/ 10 марта 2011

Вы должны определить обработчик загрузки перед началом загрузки.В тот момент, когда вы можете получить доступ к запросу. ПОСТ файл уже был загружен в память или временный файл.Это делает определение загрузчика бессмысленным, поскольку загрузка уже завершена.

В документах Django достаточно четко указано, когда следует определять собственный обработчик загрузки: «Вы можете изменять обработчики загрузки только до получения доступа к запросу. ПОСТ или запрос. ФАЙЛЫ - не имеет смысла изменять обработчики загрузки после обработки загрузки.уже началось. "Не зная достаточно о вашем коде, я могу только догадываться, но я думаю, этого должно быть достаточно, чтобы изменить ваш код следующим образом:

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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...