从 HTML 模板在龙卷风中上传带有分隔行的文件

Uploading file with separated lines in tornado from an HTML template

我正在尝试使用 tornado 创建一个从网页 (RequestHandler + HTML) 上传文件的功能。

我找到了使用这段代码的方法。但问题是文件的全部内容写在一行中,这是正常的,因为函数 self.request.files 将文件的内容保存在字典中。

python代码:

def post(self):
    myfile = self.request.files['file1'][0]
    print("myfile is", myfile)
    fname = myfile['filename']
    upload_file = open("./some_files/%s" % fname, 'w')
    upload_file.write(str(myfile['body']))

html代码:

<form enctype="multipart/form-data" action="/build" method="post">
  File: <input type="file" name="file1" />
  <br />
  <br />
  <input type="submit" value="upload" />
</form>

那么如何分隔上传文件的行呢?

问题是因为文件的内容是二进制格式,我用str()将它转换成字符串。正确的方法是像这样使用 decode()

def post(self):
    myfile = self.request.files['file1'][0]
    fname = myfile['filename']
    file_content = myfile['body'].decode("utf-8")
    print(file_content)
    with open("./some_files/%s" % fname, 'w') as upload_file:
        upload_file.write(file_content)