我正在使用 Pylons Framework (1.0) 开发一个 WebApplication。一种想要的功能是上传 zip 档案,将它们存储在服务器上,然后能够下载它们。
我首先在我的 REST 控制器中这样做:
def submit(self):
uploadedFile = request.POST['myFile']
path = 'some/path/in/the/filesystem'
storedFile = open(path, 'wb')
shutil.copyfileobj(uploadedFile.file, storedFile)
storedOrbjetFile.close()
不幸的是,这会导致存档文件损坏。我尝试直接使用uploadedFile.value,它似乎可以工作,但文件副本将在后端更深,我不想将值传递给我的后端而是文件。
我找到的替代解决方案是创建一个新的临时文件并复制其中的值。然后我可以获得临时文件的文件路径并将其路径到后端。
因此,这导致了几个未解决的问题:
- 我怎样才能做到这一点并避免额外的复制操作?
- 做这种事情的一般程序是什么?
- 是否可以将 pylons 提供的 file.file (tempfile) 与 shutil.copyobjfile 一起使用,为什么存档会损坏?
我的用例似乎很常见,所以我有点惊讶我遇到了困难..
谢谢你的帮助。