On Tue, Mar 25, 2008 at 8:51 PM, Carl <[EMAIL PROTECTED]> wrote:

> On 26 Mrz., 00:29, Malcolm Tredinnick <[EMAIL PROTECTED]>
> wrote:
> > On Tue, 2008-03-25 at 16:19 -0700, Carl wrote:
> > > Hi Djangonauts,
> >
> > > i've a problem here driving me nuts - obviously I don't get it how to
> > > do a simple file upload:
> >
> > > With a form like this:
> >
> > > <form action="." method="post" id="form" enctype="multipart/form-
> > > data">
> > >       <input type='file' name='foo'/>
> > >       <input type='submit' value='submit'/>
> > > </form>
> >
> > > and a view function like this:
> >
> > > def test(request):
> > >   if request.method=='GET':
> > >     return render_to_response('test.html')
> > >   else:
> > >     assert False, request.FILES
> >
> > > request.FILES has the following value (f. ex. a pdf):
> >
> > > <MultiValueDict: {'foo': [{'content': '<omitted>', 'content-type':
> > > 'application/pdf', 'filename': 'cheeseShop.pdf'}]}>
> >
> > > As far as I understand, this means the file wasn't uploaded
> > > ('content': '<omitted>').
> >
> > > I'm running the latest checkout and have set the MEDIA_ROOT and
> > > MEDIA_URL settings.
> >
> > > Anyone an idea why this doesn't work?
> >
> > The reason Django displays <omitted> there is because most files are not
> > just a few bytes long. If we displayed the tens, hundreds or thousands
> > of kilobytes of data in the file content, it would completely swamp the
> > printed output. So we omit the content from the printed output.
> >
> > If you actually look inside the dictionary, you'll see that the
> > "content" attribute has plenty of data there.
> >
> > Regards,
> > Malcolm
> >
> > --
> > On the other hand, you have different fingers.http://www.pointy-
> stick.com/blog/
>
> Hi Malcom,
>
> thanks for your super-fast help!
> So I was expecting the mistake at the wrong place. Still nothing gets
> written on my disk, only the database gets updated.
> My view now looks like this:
>
> def test(request):
>  if request.method=='GET':
>    return render_to_response('test.html')
>  else:
>     testForm = TestForm(request.POST, request.FILES)
>    if testForm.is_valid():
>      test=Test(**testForm.cleaned_data)
>      test.save()
>      return HttpResponse('saved!')
>    else:
>      (...)
>
> When I try to inspect the test object just after it got saved, I can't
> get his URL via get_file_url(), it just says it has no finder
> attribute.
>
> To make this complete here's the model:
>
> class Test(models.Model):
>    file = models.FileField(upload_to='temp', null=False, blank=False)
>
> and that are the settings relevant to upload:
>
> MEDIA_ROOT 'C:/DATA/Projekte/totale/nextdraft/uploaded_Files/'
> MEDIA_URL 'http://localhost:8000/firstdraft/files/'
>
> Anyone an idea where I mess up?
>
> Thanks in advance,
>

What's TestForm? If it's a ModelForm for your Test model then you should be
instantiating and saving a Test model instance like so:

   testForm = TestForm(request.POST, request.FILES)
   if testForm.is_valid():
     test=testForm.save()
     return HttpResponse('saved! %s' % (test.get_file_filename()))

Karen

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to