Python3 / Tornado / HTML文件上传修改文件

时间:2016-12-13 10:02:15

标签: html python-3.x tornado

我正在尝试通过HTML页面上传文件。该文件应写入新文件。 Python管理Post。

我的帖子方法如下:

async def post(self, id):
    """
    Used to send a component to a node OTA
    :return:
    """
    # write to file
    path = "files/"
    fileinfo = self.request.files['filearg'][0]

    fname = fileinfo['filename']
    extn = os.path.splitext(fname)[1]
    cname = str(uuid.uuid4()) + extn
    fh = open(path + cname, 'w')
    fh.write(str(fileinfo['body']))
    fh.close()
    ...

然而,这会修改文件! 如果我将.java文件提供给上传表单,例如

public class Test_SensorReading扩展了UJCmp {

public static int CMP_ID = 111; //UJCmpTypes.TEST_SENSORREADING;
public static int NB_INSTR_TO_RUN = 10000;
public static int ALLOC_MEM = 10;

public static int wait_s = 10;

public static void main(){
    Test_SensorReading inst = new Test_SensorReading();
    inst.execute();
}
...

新文件中的结果是。

b'public class Test_SensorReading extends UJCmp{\n\t\n\tpublic static int CMP_ID = 111; //UJCmpTypes.TEST_SENSORREADING;\n\tpublic static int NB_INSTR_TO_RUN = 10000;\n\tpublic static int ALLOC_MEM = 10;\n\t\n\tpublic static int wait_s = 10;\n\n\tpublic static void main(){\n\t\tTest_SensorReading inst = new Test_SensorReading();\n\t\tinst.execute();\n\t}...

该方法的其余部分失败。 我怀疑这是一个问题,文件在某处被修改,但无法确定在哪里。基本上,新文件应该与旧文件完全相同。

1 个答案:

答案 0 :(得分:0)

答案很简单:我应该在str()命令中指定编码utf-8。 像这样:

str(fileinfo['body'],'utf-8')

这会生成相同的文件!