将StringIO发送到Twisted FileSend

2024-10-04 03:26:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把一些图像数据发送到Twisted的文件发送程序。如果我使用一个临时文件来保存图像,一切正常

#works
img = Image(format='png', blob=base64.decodestring(dt))
img.save(filename='/tmp/tmp.png')
file = open('/tmp/tmp.png','rb')
filesender = FileSender().beginFileTransfer(file, request)

def fileFinished(ignored):
 request.finish()

filesender.addCallback(fileFinished)

不过,我想做的是在内存中而不是在文件中这样做。我尝试过使用StringIO来实现这一点,但是FileSender似乎只发送了几个字节就放弃了。我做错什么了?在

^{pr2}$

Tags: 文件数据图像image程序imgpngrequest
1条回答
网友
1楼 · 发布于 2024-10-04 03:26:14

当您尝试发送时,StringIO被定位在EOF。令人惊讶的是,它甚至发送了几个字节(我怀疑它没有发送,而您看到的只是HTTP帧)。在调用beginFileTransfer之前,请尝试查找开头。在

另外,您不需要在这里使用FileSender。你的数据已经完全在内存中了。FileSender实际上可能会增加发送它的成本。相反,您可以考虑更简单的方法:

request.write(buffer.getvalue())
request.finish()

相关问题 更多 >