2010-04-25 140 views
0
def upload_file(request, step_id): 
    def handle_uploaded_file (file): 
     current_step = Step.objects.get(pk=step_id) 
     current_project = Project.objects.get(pk=current_step.project.pk) 

     path = "%s/upload/file/%s/%s" % (settings.MEDIA_ROOT, current_project.project_no, current_step.name) 
     if not os.path.exists (path): 
      os.makedirs(path) 
     fd = open(path) 
     for chunk in file.chunks(): 
      fd.write(chunk) 
     fd.close() 

    if request.method == 'POST': 
     form = UploadFileForm(request.POST, request.FILES) 
     if form.is_valid(): 
      handle_uploaded_file(request.FILES['file']) 
      return HttpResponseRedirect('/success/url/') 
    else: 
     form = UploadFileForm() 
    return render_to_response('projects/upload_file.html', { 
                 'step_id': step_id, 
                 'form': form, 
                 }) 

回答

2

确保path具有必要的权限。运行python/django进程的用户需要具有write权限。 chmod0777的路径 - 这不是一个好的生产模式,但它会很快验证文件系统权限是否是问题的根源。

+0

谢谢,我怎么chmod的路径? – Semanty 2010-04-25 06:13:22

+0

假设你有shell访问权限,运行'chmod -R 0777 path/to/uploads' – Matt 2010-04-25 06:14:10

+0

对不起,我真的不知道chmod以及如何使用shell来运行chmod。 – Semanty 2010-04-25 06:23:05