我正在尝试构建一个AWS lambda函数,该函数接受文件上传,然后在内存中对其进行解析。该文件是xlsx文件,其内容通过body
的{{1}}键如下所示进入lambda函数:
开始:
event
字符串的结尾看起来像这样:
----------------------------300017151060007960655534
Content-Disposition: form-data; name="tag_list"; filename="test-list.xlsx"
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
PK
�y�N docProps/PK
如果我在计算机上进行实际文件的开头/结尾,则该文件似乎始于[Content_Types].xmlPK�;
----------------------------475068475306850797919587--
,结束于PK
。我试图将这一部分切开,并创建一个xmlPK�;
对象或一个BytesIO
,但是这些选项都不起作用。它们都会给我类似无效的搜索位置或严重的zip文件错误之类的信息。
我的目标是将该xlsx文件加载到内存中,然后使用SpooledTemporaryFile
对其进行解析。
我当前的功能目前看起来有点像这样。我一直在尝试使用不同的格式,有时会解码,有时不会。
openpyxl
然后,我尝试将def lambda_handler(event, context):
file_index = event['body'].index('PK')
file_string = event['body'][file_index:]
file_end = file_string.index(';')
file = file_string[:file_end].encode('utf-8')
字符串传递到file
或BytesIO
中,但是它们都给我错误...
请注意,我不想使用S3。