【问题标题】:Python - open uploaded filePython - 打开上传的文件
【发布时间】:2015-02-04 19:05:49
【问题描述】:

我有一个 Tornado Web 应用程序,我想在其中读取上传的文件。这是从客户那里收到的,我尝试这样做:

def post(self):

    file = self.request.files['images'][0]

    dataOpen = open(file['filename'],'r');
    dataRead = dataOpen.read()

但它给出了IOError

Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\tornado\web.py", line 1332, in _execute
    result = method(*self.path_args, **self.path_kwargs)
  File "C:\Users\rsaxdsxc\workspace\pi\src\Server.py", line 4100, in post
    dataOpen = open(file['filename'],'r');
  IOError: [Errno 2] No such file or directory: u'000c02c55024aeaa96e6c79bfa2de3926dbd3767.jpg'

为什么看不到文件?

【问题讨论】:

  • 该文件是否位于您的工作目录中?
  • 是从网页端上传的文件
  • 嗯,您需要确保该目录与 Python 试图从中获取它的位置相匹配。否则你可以使用绝对路径。
  • 确保在上传文件之前写入文件,然后再阅读。用 write(file['body'])

标签: python tornado


【解决方案1】:

file['filename'] 的值只是上传文件的名称,它不是文件系统中的路径。文件内容在file['body']。您可以根据需要使用 StringIO 模块来模拟文件接口,或者直接迭代 file['body']

你可以使用的很好的例子是here

因此,您的发布请求处理程序可能如下所示:

def post(self):

    file = self.request.files['images'][0]
    dataRead = file['body']
    store_file_somewhere(file['filename'], dataRead)

【讨论】:

  • 谢谢,但如果这是一个上传的图像,将直接存储到数据库中,那么您将如何在远程服务器上创建路径,然后将文件保存到数据库中?
  • 你是要将图像文件的路径存储在数据库中还是图像文件的所有二进制内容?
  • 我想直接存储到数据库中,并且能够使用 GridFS 为 mongoDB 做到这一点。谢谢
猜你喜欢
  • 1970-01-01
  • 2023-03-19
  • 2020-02-01
  • 1970-01-01
  • 2017-10-03
  • 1970-01-01
  • 2023-01-01
  • 1970-01-01
  • 2018-07-03
相关资源
最近更新 更多