Hi Fredrik
Sorry that I confused u
Thomas Thomas wrote:>there's no way the tuple creation will generate a UnicodeDecodeError>all by itself. are you sure the error occurs on that line?u r right, the error is not generated in tuple creation . it generated where join the strings at the line
body = CRLF.join(L)
what i was trying to say was how the various tuples behave..if i use
file = ('file', filename, data) #it gives me unicode error
in this case I am using binary data..
file = ('file', filename, 'data'*100)but the same filename works fine if i pass text data
file = ('file', 'test.pdf', data)
so if hardcode the file name /use
filename=filename.encode("ascii") things work with binary data as well..
I was wondering why..
thanks
Thomasimport httplib, mimetypesimport os;def get_content_type(filename): return mimetypes.guess_type(filename)[0] or 'application/octet-stream'filepath= 'c:/Documents and Settings/Administrator/Desktop/tmp/test.pdf';f = open(filepath, "rb")data = "">f.close()(filedir, filename) = os.path.split(filepath)filename=unicode(filename);#file = ('file', filename, data) #This won't work will give a UnicodeDecodeError: 'ascii' codec can't decode byte 0xc7 in position 10: ordinal not in range(128)file = ('file', filename, 'data'*100) #this will work fine#file = ('file', 'test.pdf', data) #This also works finefiles = [file]CRLF = '\r\n'L = []for (key, filename, value) in files: L.append('Content-Disposition: form-data; name="%s"; filename="%s"' % (key, filename)) L.append(value)body = CRLF.join(L)
Do you Yahoo!?
Yahoo! Mail - Find what you need with new enhanced search. Learn more.--
http://mail.python.org/mailman/listinfo/python-list