Re: Binary Post Data to ImageField

2009-12-28 Thread Markus T.
After some digging, I finally worked it out. In case anyone is
interested, here is the code for Django:

from django.core.files.uploadedfile import SimpleUploadedFile

def set_user_image(request, img_id):
  """
  set/update a user's image
  """
  if not request.user.is_authenticated():
return HttpResponse(status=403)

  # get the profile for the logged on user
  profile = get_object_or_404(GenericProfile, user = request.user)

  # instantiate an uploaded file to be passed to the model
  upfile = SimpleUploadedFile("%s.jpg" % img_id,
  request._raw_post_data,
  "image/jpeg")

  # update the user profile
  profile.image.save("%s.jpg" % img_id, upfile, True)

  return HttpResponse()

This code lacks important functionality though, e.g. check if the file
is a valid JPEG image, check if img_id is valid, etc.

So basically all you have to do is create a new SimpleUploadFile
object and initialize it with the raw POST data. Of course the client
has to use the correct format; in Flex, I did something like this:

  var req:URLRequest = new URLRequest(baseURL + "setimage/" + _field);
  req.method = "POST";
  req.data = jpData; /* this is the ByteArray containing JPEG data */
  req.contentType = "image/jpeg";

  var loader:URLLoader = new URLLoader();
  loader.addEventListener(Event.COMPLETE, uploadOK);
  loader.addEventListener(IOErrorEvent.IO_ERROR, uploadFault);
  loader.load(req);

To all you Django gurus out there: is this a sensible approach?

Thanks and happy holidays!

Markus

--

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




Re: Binary Post Data to ImageField

2009-12-21 Thread 邓超
As I know Django can not save binary data with it's default orm, you can try
to select another orm like sqlalchemy, or you can try to
modify the orm to make it can save binary data.

2009/12/21 Markus T. 

> Hi,
>
> I'm trying to save binary POST data to an ImageFile field - so far
> with no satisfying success.
>
> I can't seem to convince the client (Flex based image editor) to send
> binary data as correct "multipart/form-data"; I only have the option
> to send as raw binary data or with POST variables.
>
> My view function happily receives the binary data, and it looks ok. As
> far as I understand things, if the uploaded data was sent correctly as
> multipart-form-data, Django would create an InMemoryUploadFile object
> and pass it in request.FILES. I could use this code to save the image
> then:
>
> model_instance.image.save("%s.jpg" % img_id, request.FILES
> ['user_img'], True)
>
> What sensible approach could I use to update/save the image with
> binary POST data? I do not want to create a temporary file, though.
>
> I just don't seem to have enough in-depth Django knowledge to find a
> satisfying solution...
>
> Thanks!
>
> Markus
>
> --
>
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To post to this group, send email to django-us...@googlegroups.com.
> To unsubscribe from this group, send email to
> django-users+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>
>
>


-- 
Deng Chao

--

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




Binary Post Data to ImageField

2009-12-21 Thread Markus T.
Hi,

I'm trying to save binary POST data to an ImageFile field - so far
with no satisfying success.

I can't seem to convince the client (Flex based image editor) to send
binary data as correct "multipart/form-data"; I only have the option
to send as raw binary data or with POST variables.

My view function happily receives the binary data, and it looks ok. As
far as I understand things, if the uploaded data was sent correctly as
multipart-form-data, Django would create an InMemoryUploadFile object
and pass it in request.FILES. I could use this code to save the image
then:

model_instance.image.save("%s.jpg" % img_id, request.FILES
['user_img'], True)

What sensible approach could I use to update/save the image with
binary POST data? I do not want to create a temporary file, though.

I just don't seem to have enough in-depth Django knowledge to find a
satisfying solution...

Thanks!

Markus

--

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