2

私のスクリプトは、Deform File Upload Widget の例とまったく同じです。

@view_config(renderer='templates/form.pt', name='file')
@demonstrate('File Upload Widget')
def file(self):

    class Schema(colander.Schema):
        upload = colander.SchemaNode(
            deform.FileData(),
            widget=deform.widget.FileUploadWidget(tmpstore)
            )

    schema = Schema()
    form = deform.Form(schema, buttons=('submit',))

    return self.render_form(form, success=tmpstore.clear)

キャプチャされたアップロードtest_file.grfは、次のようなdeform.FileDataスキーマ ノードです。

>> captured['upload']
{'filename': u'test_file.grf',
 'fp': <tempfile._TemporaryFileWrapper object at 0x000000000638A6A0>,
  'mimetype': 'text/plain',
  'preview_url': None,
  'size': -1,
  'uid': '42DXY7DYW3'}

質問

deform.FileData特定の場所にファイルとして保存する方法は?

ファイルを開いて、指定された場所にコピーしようとしていsrcますTypeError:

with open(captured['upload']['fp'], 'r') as f:
    shutil.copyfileobj(f, src)
4

1 に答える 1

2

ファイルをバイナリで開くだけで解決しました:

with open(src, 'wb') as f:
    f.write(captured['upload']['fp'].read())
于 2016-06-16T14:13:59.200 に答える