On Fri, Aug 19, 2016 at 1:24 PM, Chris Angelico <ros...@gmail.com> wrote: > On Sat, Aug 20, 2016 at 3:10 AM, Larry Martell <larry.mart...@gmail.com> > wrote: >> I have some python code (part of a django app) that processes a >> request that contains a png file. The request is send with >> content_type = 'application/octet-stream' >> >> In the python code I want to write this data to a file and still have >> it still be a valid png file. >> >> The data I get looks like this: >> >> u'\ufffdPNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x01\ufffd\x00\x00\x01\ufffd >> ......' >> >> If I try and write that to a file it fails with a UnicodeEncodeError. >> If I write it with encode('utf8') it writes the file, but then it's no >> longer a valid png file. >> >> Anyone know how I can do this? > > At that point, you've already lost information. Each U+FFFD (shown as > "\ufffd" above) is a marker saying "a byte here was not valid UTF-8" > (or whatever was being used). Something somewhere took the .png file's > bytes and tried to interpret them as text, which they're not. > > What sent you that data? How did you receive it?
The request is sent by a client app written in C++ with Qt. It's received by a django based server. I am trying to port a falcon server to django. The falcon server code did this: form = cgi.FieldStorage(fp=req.stream, environ=req.env) and then wrote the png like this: fd.write(form[key].file.read()) Whereas in the django server I am doing: fd.write(request.POST[key]) I've never used the cgi module. I guess I can try that. I've written a lot with django but never had to receive a PNG file. -- https://mail.python.org/mailman/listinfo/python-list