Почему при загрузке файла Django возникает ошибка IOError (2, «Нет такого файла или каталога»)? - PullRequest
1 голос
/ 18 июня 2011

Я пишу простой загрузчик файлов для веб-сайта. Пользователь видит форму:

<form enctype="multipart/form-data" action="/uploader/" name="upload" method="post">
  <input type="file" name="datafile" size="20">
  {% csrf_token %}
  <span class="whats_this">Maximum File Size is 100 MB</span>
  <button class="button orange" type="start_upload" value="Submit" onclick="document.upload.submit() ">Start Upload</button>
  <span class="cancel_button"><a href="#">Cancel</a></span>     
</form>

и после отправки я перенаправляю на эту функцию:

def uploadFiles(request):
  if request.method == 'POST':    
     if(validate(request)):
        file = request.FILES['datafile']

        destination = open('uploadedFiles/test.txt', 'wb+')

        for chunk in file.chunks():
            destination.write(chunk)
        destination.close()

        context = {'files': file.name}
        return render_to_response('dashboard.html', context)
    else:
        ...

Когда я опробую эту функцию, я всегда получу исключение:

IOError at /uploader/
(2, 'No such file or directory')
uploader\views.py in uploadFiles, line 17

Строка 17 - это строка назначения "destination = open ('uploadedFiles / test.txt', 'wb +')". Я пробовал это совсем немного, но это просто не работает. Я что-то здесь упускаю?

1 Ответ

3 голосов
/ 19 июня 2011

Вы не говорите, куда вы пытаетесь загрузить или где вы создали каталог uploadedFiles.Проблема в том, что вы указываете относительный путь, но далеко не очевидно, где он находится - вероятно, в файле manage.py или .wsgi, который обслуживает ваш сайт.

Укажите абсолютный путь, который для наилучших результатов должен быть ниже MEDIA_ROOT.

...