【问题标题】:Why does Django file upload throws a IOError (2, 'No such file or directory') exception?为什么 Django 文件上传会引发 IOError (2, 'No such file or directory') 异常?
【发布时间】:2011-09-17 22:01:36
【问题描述】:

我正在为网站编写一个简单的文件上传器。用户看到一个表单:

<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+')”的行。我已经尝试了很多,但它根本不起作用。我在这里遗漏了什么重要的东西吗?

【问题讨论】:

    标签: django file-upload django-forms django-views


    【解决方案1】:

    您没有说明您要上传到哪里,或者您在哪里创建了uploadedFiles 目录。问题是您提供了一个相对路径,但它与它的相对位置相去甚远——可能是为您的站点提供服务的manage.py.wsgi 文件。

    给出一个绝对路径,为了获得最佳结果,它应该在MEDIA_ROOT下。

    【讨论】:

    • 谢谢丹尼尔。问题是路径。我检查了 os.getcwd() 并发现我在 /uploader/...之前缺少一个文件夹“/project”。
    • @phmulin:随时接受丹尼尔的回答(点击复选标记)。这让其他人知道您的问题已得到解决,并且您感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 2019-07-13
    • 2011-01-24
    相关资源
    最近更新 更多