Python - 打开上传的文件

时间:2015-02-04 19:05:50

标签: python tornado

我有一个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'

为什么它无法看到该文件?

1 个答案:

答案 0 :(得分: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)