Загрузка файла с разделенными строками в торнадо из HTML-шаблона - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь создать функцию для загрузки файлов с веб-страницы (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>

Так как же я могу разделить строки моего загруженного файла?

1 Ответ

0 голосов
/ 06 февраля 2019

Проблема была связана с тем, что содержимое файла было в двоичном формате, и я преобразовал его в строку с 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)
...