我们正在尝试使用azure http触发器的func.httpResponse
返回openpyxl
的工作簿。在此之前,我们需要将其转换为Bytes或byteArray。
文件的类型为openpyxl.workbook.workbook.Workbook()
。
最好的方法是使用tempfile.NamedTemporaryFile
。在研究documentations时,我们做了以下工作:
tempFilePath = tempfile.gettempdir()
fp = tempfile.NamedTemporaryFile()
customizedFile.save(fp)
filesDirListInTemp = listdir(tempFilePath)
我们的工作簿是customizedFile
。
我们无法检索文件及其路径,以便使用该路径上传到blob存储中。
我们试过这个:
with NamedTemporaryFile(mode='w') as tmp:
customizedFile.save(tmp.name)
output = io.BytesIO(tmp)
return func.HttpResponse(output, status_code=200)
但是,我们得到了以下错误:
应为str、bytes或os。PathLike对象,而不是Workbook
我们尝试了几个选项,如转换为base64,但它不工作,因为错误是脚本预期的字节或byteArray不是工作簿:
file_stream = io.BytesIO()
file =open(customizedFile, 'rb')
file.save(file_stream)
file_stream.seek(0)
base64_data = base64.b64encode(file_stream.getvalue()).decode('utf-8')
错误:
应为str、bytes或os。PathLike对象,而不是Workbook
如何将工作簿上传到触发器目录中的临时文件夹中,将其转换为字节并返回HTTP响应?
1条答案
按热度按时间mpgws1up1#
我发现了如下的解决方案: