views:

47

answers:

1
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,
                                                      })
+1  A: 

Make sure path has the necessary permissions. The user running the python/django process needs to have write permissions. chmod the path to 0777 - this isn't a good mode for production, but it will quickly verify if filesystem permissions are the root of the problem.

Matt
thanks, how could i chmod the path?
Semanty
Assuming you have shell access, run `chmod -R 0777 path/to/uploads`
Matt
sorry, i really don't konw much about chmod and how to use shell to run chmod.
Semanty
I mean, could the cod be directly modified, and then i can study more deeply
Semanty
i am using django under windows
Semanty