File.py
file = fields.Binary('File')
@api.multi
def get_file(self):
if self.file:
xsl_file = base64.decodestring(self.file)
m = magic.open(magic.MAGIC_MIME)
print 'fffffffffffffff',m.file(xsl_file) //prints None
print 'fffffffffffffff',m.file(self.file) //prints None
print self.file //Prints binary string.
二进制字符串 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAOwADAP7 / CQAGAAAAAAAAAAAAAAABAAAACQAAAAAAAAAAEAAAAgAAAAEAAAD + //// AAAAAAAAAAD ////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////// 9 ////////// 7 /// 8EAAAABQAAAAYAAAAHAAAACAAAAP7 /// 8KAAAA / v的//////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// /////////////// 1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUA //////////////// AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA / v /// wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD /////////// //// 8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD + //// AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP /////////////// wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7 /// 8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA //////////////// AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA / V /// wAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAD + //// //// IgAAAP7 + //// JQAAACYAAAAnAAAAKAAAAP7 /// 8qAAAA / v的////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////// 8JCBAAAAYFALsNzAcAAAAABgAAAOEAAgCwBMEAAgAAAOIAAABcAHAABAAAQ2FsYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIAAgCwBGEBAgAAAMABAAA9AQIAAQCcAAIADgCvAQIAAAC8AQIAAAA9ABIAAAAAAABA ACA4AAAAAAABAN8DQAACAAAAjQACAAAAIgACAAAADgACAAEAtwECAAAA2gACAAAAMQAaAMgAAAD / f5ABAAAAAgEABQFBAHIAaQBhAGwAMQAaAMgAAAD / f5ABAAAAAAAABQFBAHIAaQBhAGwAMQAaAMgAAAD / f5ABAAAAAAAABQFBAHIAaQBhAGwAMQAaAMgAAAD / f5ABAAAAAAAABQFBAHIAaQBhAGwAMQAaAMgAAAD / f5ABAAAAAgAABQFBAHIAaQBhAGwAHgQMAKQABwAAR2VuZXJhbOAAFAAAAKQA9f8gAAAAAAAAAAAAAADAIOAAFAABAAAA9f8gAAD0AAAAAAAAAADAIOAAFAABAAAA9f8gAAD0AAAAAAAAAADAIOAAFAACAAAA9f8gAAD0AAAAAAAAAADAIOAAFAACAAAA9f8gAAD0AAAAAAAAAADAIOAAFAAAAAAA9f8gAAD0AAAAAAAAAADAIOAAFAAAAAAA9f8gAAD0AAAAAAAAAADAIOAAFAAAAAAA9f8gAAD0AAAAAAAAAADAIOAAFAAAAAAA9f8gAAD0AAAAAAAAAADAIOAAFAAAAAAA9f8gAAD0AAAAAAAAAADAIOAAFAAAAAAA9f8gAAD0AAAAAAAAAADAIOAAFAAAAAAA9f8gAAD0AAAAAAAAAADAIOAAFAAAAAAA9f8gAAD0AAAAAAAAAADAIOAAFAAAAAAA9f8gAAD0AAAAAAAAAADAIOAAFAAAAAAA9f8gAAD0AAAAAAAAAADAIOAAFAAAAKQAAQAgAAAAAAAAAAAAAADAIOAAFAABACsA9f8gAADwAAAAAAAAAADAIOAAFAABACkA9f8gAADwAAAAAAAAAADAIOAAFAABACwA9f8gAADwAAAAAAAAAADAIOAAFAABACoA9f8gAADwAAAAAAAAAADAIOAAFAABAAkA9f8gAADwAAAAAAAAAADAIOAAFAAAAKQAAQAgAAD4AAAAAAAAAADAIOAAFAAAAKQA AQAoAAD4AAAAAAAAAADAIOAAFAAFAKQAAQAgAAAIAAAAAAAAAADAIJMCBAAAgAD / kwIEABCAA / + TAgQAEYAG / 5MCBAASgAT / kwIEABOAB / + TAgQAFIAF / 2ABAgABAIUADwCWBQAAAAAHAFNoZWV0IDGMAAQAAQABAMEBCADBAQAAVI0BAOsAWgAPAADwUgAAAAAABvAYAAAAAAQAAAIAAAABAAAAAQAAAAEAAAABAAAAMwAL8BIAAAC / AAgACACBAQkAAAjAAUAAAAhAAB7xEAAAAA0AAAgMAAAIFwAACPcAABD8ANQACQAAAAkAAAACAABpZAwAAGRlZmF1bHRfY29kZQUAAGltYWdlIAAAX19leHBvcnRfXy5wcm9kdWN0X3RlbXBsYXRlXzE5NTAGAAAxMzAwMzAyAAAvaG9tZS9zaGFyL0Rvd25sb2Fkcy9ob21lZ3Jvd24tdG9tYXRvZXMtYmFza2V0LmpwZyAAAF9fZXhwb3J0X18ucHJvZHVjdF90ZW1wbGF0ZV8xOTU0BgAAMTMwMDQyIAAAL2hvbWUvc2hhci9Eb3dubG9hZHMvQ2Fycm90MS5qcGf / AAIACQBjCBUAYwgAAAAAAAAAAAAAFQAAAAAAAAACCgAAAAkIEAAABhAAuw3MBwAAAAAGAAAADAACAGQADwACAAEAEQACAAAAEAAIAPyp8dJNYlA / XwACAAEAgAAIAAAAAAAAAAAAJQIEAAAA / wCBAAIAwQQqAAIAAAArAAIAAACCAAIAAQAUAAcABAAAJkMmUBUABwAEAAAmQyZGgwACAAEAhAACAAAAJgAIADMzMzMzM9M / JwAIADMzMzMzM9M / KAAIAC3Ygi3YguM / KQAIAAZbsAVbsNc / oQAiAAkAZAABAAEAAQCDACwBLAGamZmZmZm5P5qZmZmZmbk / AQBVAAIACgB9AAwAAAABAEEfDwAAAAAAfQAMAAIAAgAuLw8AAAAAAH0ADAADAAABiAsPAAAA AAAAAg4AAAAAAAMAAAAAAAMAAAAIAhAAAAAAAAMA / wAAAAAAAAEPAAgCEAABAAAAAwA2AQAAAAAAAQ8ACAIQAAIAAAADADQBAAAAAAABDwD9AAoAAAAAABUAAAAAAP0ACgAAAAEAFQABAAAA / QAKAAAAAgAPAAIAAAD9AAoAAQAAABYAAwAAAP0ACgABAAEAFgAEAAAA / QAKAAEAAgAPAAUAAAD9AAoAAgAAABYABgAAAP0ACgACAAEAFgAHAAAA / QAKAAIAAgAXAAgAAADsAFAADwAC8EgAAAAQAAjwCAAAAAEAAAAABAAADwAD8DAAAAAPAATwKAAAAAEACfAQAAAAAAAAAAAAAAAAAAAAAAAAAAIACvAIAAAAAAQAAAUAAAA + AhIAtgYAAAAAQAAAAAAAAAAAAAAAHQAPAAMCAAIAAAABAAIAAgACAmcIFwBnCAAAAAAAAAAAAAACAAH ///// AAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAP7 / AwoAAP //// 8QCAIAAAAAAMAAAAAAAABGGwAAAE1pY3Jvc29mdCBFeGNlbCA5Ny1UYWJlbGxlAAYAAABCaWZmOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD + / wAAAQACAAAAAAAAAAAAAAAAAAAAAAABAAAA4IWf8vlPaBCrkQgAKyez2TAAAAAIAQAADQAAAAEAAABwAAAAAgAAAHgAAAADAAAAhAAAAAQAAACQAAAABQAAAJwAAAAGAAAAqAAAAAcAAAC0AAAACAAAAMAAAAAJAAAAzAAAAAoAAADYAAAACwAAAOQAAAAMAAAA 8AAAAA0AAAD8AAAAAgAAAOn9AAAeAAAAAQAAAAAAAAAeAAAAAQAAAAAAAAAeAAAAAQAAAAAAAAAeAAAAAQAAAAAAAAAeAAAAAQAAAAAAAAAeAAAAAQAAAAAAAAAeAAAAAQAAAAAAAAAeAAAAAgAAADEAAABAAAAAgFXIIAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAu0 + joyf + 0gEAAAAAAAAAAP7 / AAABAAIAAAAAAAAAAAAAAAAAAAAAAAIAAAAC1c3VnC4bEJOXCAArLPmuRAAAAAXVzdWcLhsQk5cIACss + a5cAAAAGAAAAAEAAAABAAAAEAAAAAIAAADp / QAAGAAAAAEAAAABAAAAEAAAAAIAAADp / QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSAG8AbwB0ACAARQBuAHQAcgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAFAP ////////// AQAAABAIAgAAAAAAwAAAAAAAAEYAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAADACgAAAAAAAFcA bwByAGsAYgBvAG8AawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAIAAgAAAAQAAAD ///// AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAIAAAAAAAAAQBDAG8AbQBwAE8AYgBqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAgADAAAA ////////// 8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAAAASQAAAAAAAAABAE8AbABlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgACAP /////////////// wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAAAAUAAAAAAAAAAUAUwB1AG0AbQBhAHIAeQBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAIA ///// wUAAAD ///// AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAADgBAAAAAAAABQBEAG8AYwB1AG0AZQBuAHQAUwB1AG0AbQBhAHIAeQBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AAAAAAAAAAAAAADgAAgD //// /////////// 8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP /////////////// wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAP7 /// 8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA //////////////// AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA / V /// wAAAAAAAAAA'
我的问题是,如何从这个二进制字符串中找到文件扩展名?
答案 0 :(得分:1)
终于找到了解决方案:
<强> *。PY 强>
file = fields.Binary('File')
file_fname = fields.Char(string='File name')
<强> *。XML 强>
<field widget="binary" height="64" name="file" filename="file_fname" required="1"/>
<field name="file_fname" invisible="1" />
文件名将保存在file_fname
字段中。
并使用splitext
方法从文件名中提取扩展名。
@api.onchange('file')
@api.depends('file','file_fname')
def check_file_type(self):
if self.file:
filename,filetype = os.path.splitext(self.file_fname)
if filetype not in ['.xls','.csv']:
raise UserError(_('Invalid file type!!!\n Choose excel or csv file format.'))