Is it possible the file is somehow being encoded upon upload?  That would 
explain corruption, right?  Is the POST specifying that it is transferring 
binary data?  Is there MIME Type set to Excel?  Just ideas, not sure what's 
going on.

On Tuesday, February 11, 2014 2:42:04 PM UTC-5, Jessica Le wrote:
>
> No, it results in a corrupt Excel file. =(
>
>
> On Tue, Feb 11, 2014 at 4:28 AM, Kevin Houlihan 
> <[email protected]<javascript:>
> > wrote:
>
>> Hi Jessica,
>>
>> In the original code you posted it looks like you had already saved the 
>> file to disk before you went about trying to print it. Did this result in a 
>> valid file that you could open in excel?
>>
>> Regards,
>> Kevin
>>
>>
>> On Tue, Feb 11, 2014 at 12:21 AM, Jessica Le <[email protected]<javascript:>
>> > wrote:
>>
>>> I dont quite understand why I would want to encode/decode the xls files 
>>> either, but for some reason the upload method from the webpy library throws 
>>> the UnicodeDecodeError when I try to print out the values from the uploaded 
>>> Excel file. The upload file method works for text files fine though. I 
>>> investigated the UnicodeDecode error on stackoverflow, and it seemed like 
>>> that was the way to go... 
>>>
>>> All I want to do is let the user be able to upload an Excel file using 
>>> REST. It shouldn't be this hard :( 
>>>
>>>
>>> On Mon, Feb 3, 2014 at 7:58 PM, James Tyra <[email protected]<javascript:>
>>> > wrote:
>>>
>>>> Jessica just so you know I can not possibly imagine a reason to run 
>>>> pythons "encode" or "decode" functions on an uploaded Excel file or ANY 
>>>> file. These functions interpret the input as a text stream, modifying it 
>>>> in 
>>>> various ways to make it human readable. This will absolutely corrupt an 
>>>> excel file or any non txt file.
>>>>  
>>>> In order to process Microsoft xls or xlsx files with Python you are 
>>>> going to need some type of special library.
>>>>
>>>> I recommend you take a step back for a second and explain to us what 
>>>> your trying to accomplish.  
>>>> On Feb 3, 2014 8:52 PM, "Jessica Le" <[email protected] <javascript:>> 
>>>> wrote:
>>>>
>>>>> So after doing more research/testing, it seems like the built in 
>>>>> function for file upload only seems to work flawlessly for txt files. Is 
>>>>> there a library out there for other kinds of files? 
>>>>>
>>>>> On Friday, January 17, 2014 3:58:15 PM UTC-6, Jessica Le wrote:
>>>>>>
>>>>>> Hi all, 
>>>>>>
>>>>>> I'm trying to create an application that lets users upload an .xls 
>>>>>> file that I then take and feed that uploaded.xls file into my program 
>>>>>> which 
>>>>>> reads and parses it. However, I am having issues with the utf-8 encoding 
>>>>>> for the Excel files. I have searched everywhere on stackoverflow and 
>>>>>> google, but none of them are working.
>>>>>>
>>>>>> Here is my code:
>>>>>>
>>>>>> def POST(self):
>>>>>>         x = web.input(calendar_file={}, ref_id='')
>>>>>>         if x:
>>>>>>         ref_id = (x.ref_id if x.ref_id else "")
>>>>>>         filepath=x.calendar_file.filename # replaces the 
>>>>>> windows-style slashes with linux ones.
>>>>>>         fn=filepath.split('/')[-1] # splits the and chooses the last 
>>>>>> part (the filename
>>>>>>         filename = 
>>>>>> "%s/Users/jl98567/Documents/xMatters_calendar_app/test/" 
>>>>>> + fn
>>>>>>         fullpath = os.path.join('c:', filename % (ref_id))
>>>>>>         content = x["calendar_file"].file.read()
>>>>>>         with open(fullpath, 'w') as f_out:
>>>>>>         if not f_out:
>>>>>>         raise Exception("Unable to open %s for writing. " % 
>>>>>> (fullpath))
>>>>>>         f_out.write(content)
>>>>>>         print str(x['calendar_file'].value.encode('utf8','ignore'))
>>>>>>         raise web.seeother('/upload?ref_id=%s&filename=%s' % 
>>>>>> (ref_id, filename))
>>>>>>
>>>>>>
>>>>>> Here is the error;
>>>>>>
>>>>>> <type 'exceptions.UnicodeDecodeError'> at / 'ascii' codec can't 
>>>>>> decode byte 0xd0 in position 0: ordinal not in range(128) Python
>>>>>> C:\Users\jl98567\Documents\xMatters_calendar_app\schedule_web.py in 
>>>>>> POST, line 45 WebPOST http://localhost:8080/ 
>>>>>> line 45 is: print str(x['calendar_file'].value.
>>>>>> encode('utf8','ignore'))
>>>>>>
>>>>>> I have tried decoding it and then encoding it similar to this one:
>>>>>>
>>>>>> print str(x['calendar_file'].value.decode('utf-8').encode('utf8',
>>>>>> 'ignore'))
>>>>>>
>>>>>>  but still doesn't work.
>>>>>>
>>>>>> Any suggestions?
>>>>>>
>>>>>> Thanks much! 
>>>>>>
>>>>>>  -- 
>>>>> You received this message because you are subscribed to the Google 
>>>>> Groups "web.py" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>>> an email to [email protected] <javascript:>.
>>>>>
>>>>> To post to this group, send email to [email protected]<javascript:>
>>>>> .
>>>>> Visit this group at http://groups.google.com/group/webpy.
>>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>>
>>>>  -- 
>>>> You received this message because you are subscribed to a topic in the 
>>>> Google Groups "web.py" group.
>>>> To unsubscribe from this topic, visit 
>>>> https://groups.google.com/d/topic/webpy/_i64Ym_Ubxg/unsubscribe.
>>>> To unsubscribe from this group and all its topics, send an email to 
>>>> [email protected] <javascript:>.
>>>>
>>>> To post to this group, send email to [email protected]<javascript:>
>>>> .
>>>> Visit this group at http://groups.google.com/group/webpy.
>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>
>>>
>>>  -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "web.py" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to [email protected] <javascript:>.
>>> To post to this group, send email to [email protected]<javascript:>
>>> .
>>> Visit this group at http://groups.google.com/group/webpy.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>
>>  -- 
>> You received this message because you are subscribed to a topic in the 
>> Google Groups "web.py" group.
>> To unsubscribe from this topic, visit 
>> https://groups.google.com/d/topic/webpy/_i64Ym_Ubxg/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to 
>> [email protected] <javascript:>.
>> To post to this group, send email to [email protected] <javascript:>
>> .
>> Visit this group at http://groups.google.com/group/webpy.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"web.py" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/webpy.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to