我正在尝试通过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}...
该方法的其余部分失败。 我怀疑这是一个问题,文件在某处被修改,但无法确定在哪里。基本上,新文件应该与旧文件完全相同。
答案 0 :(得分:0)
答案很简单:我应该在str()命令中指定编码utf-8。 像这样:
str(fileinfo['body'],'utf-8')
这会生成相同的文件!