Как получить доступ к временному загруженному файлу в web2py?

Я использую sqlform для загрузки видеофайла и хочу кодировать видеофайл при загрузке. Но я заметил, что файл загрузки не сохраняется в каталоге загрузки, пока он полностью не загружен. Есть ли временный файл и как я могу получить к нему доступ? Спасибо.


person Treper    schedule 04.06.2012    source источник


Ответы (1)


Я не уверен, как вы могли бы обрабатывать файл во время его загрузки (т. е. обрабатывать байты по мере их получения сервером), но если вы можете дождаться полной загрузки файла, вы можете получить доступ к загруженному файлу. файл как объект Python cgi.FieldStorage:

def upload():
    if request.vars.myfile:
        video = encode_video(request.vars.myfile.file)
        [do something with video]
    form = SQLFORM.factory(Field('myfile', 'upload',
        uploadfolder='/path/to/upload')).process()
    return dict(form=form)

После загрузки request.vars.myfile будет объектом cgi.FieldStorage, а объект открытого файла будет находиться в request.vars.myfile.file. Обратите внимание: если кодирование занимает некоторое время, вы можете передать его в очередь задач, а не обрабатывать в контроллере.

person Anthony    schedule 04.06.2012
comment
Ну, я просто не могу дождаться, пока файл полностью загрузится. Он должен кодироваться при загрузке. Все равно спасибо. - person Treper; 04.06.2012