2015-02-04 4 views
0

У меня есть веб-приложение Tornado, где я хочу прочитать загруженный файл. Это получено от клиента, и я стараюсь сделать так, как это:Python - открыть загруженный файл

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' 

Почему не в состоянии видеть файл?

+0

находится ли файл в рабочем каталоге? –

+0

Это файл, загруженный с веб-клиента – user94628

+1

Ну, вам нужно убедиться, что каталог соответствует тому, где Python пытается его захватить. Иначе вы можете использовать абсолютный путь. –

ответ

1

Значение file['filename'] - это просто имя загружаемого файла, это не путь в вашей файловой системе. Содержимое файла находится в . Вы можете использовать модуль StringIO для эмуляции интерфейса файла, если хотите, или просто напрямую перебирать .

Очень хороший пример, который вы могли бы использовать это here

Итак, ваш пост обработчик запроса может выглядеть следующим образом:

def post(self): 

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

Спасибо, но если это загруженное изображение, которое будет храниться непосредственно в базе данных, то как бы вы создали путь на удаленном сервере, чтобы затем сохранить файл в базе данных? – user94628

+0

Вы собираетесь хранить путь к файлу изображения в db или все двоичное содержимое файла изображения? –

+0

Я хочу сохранить прямо в БД и смог сделать это с помощью 'GridFS' для mongoDB. Спасибо – user94628

Смежные вопросы