I'm not sure if the file is being encoded upon upload... I'm trying to find 
more documentation on the web.input method because I think it maybe have to 
do with this problem. Perhaps it doesn't support Excel files?

Here is the code that I'm trying to print out the contents of the file:

 x = web.input(calendar_file={}, ref_id='') #picks up the upload contents 
of the file 
print x['calendar_file'].value

Maybe I'm using the method wrong, but there isn't much documentation on 
this... 

This is what I"m using: http://webpy.org/cookbook/fileupload


On Tuesday, February 11, 2014 1:52:38 PM UTC-6, David Kopec wrote:
>
> 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]>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]> 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]> 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]> 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].
>>>>>>
>>>>>> 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.
>>>>>>
>>>>>  -- 
>>>>> 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].
>>>>>
>>>>> 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.
>>>>>
>>>>
>>>>  -- 
>>>> 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.
>>>>
>>>
>>>  -- 
>>> 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].
>>> 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.
>>>
>>
>>

-- 
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