如何从字节数组中提取文件扩展名 [英] How to extract file extension from byte array

查看:40
本文介绍了如何从字节数组中提取文件扩展名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在数据库中有字节数组.

I've got bytes array in database.

java 如何从字节数组中提取文件扩展名(mime/type)?

How to extract file extension (mime/type) from byte array in java?

推荐答案

如果这是为了存储上传的文件:

If this is for storing a file that is uploaded:

  • 为文件扩展名创建一列
  • 为浏览器发送的 mime 类型创建一列

如果您没有原始文件,而只有字节,那么您有几个不错的解决方案.

If you don't have the original file, and you only have bytes, you have a couple of good solutions.

如果您能够使用库,请查看使用 mime-util 检查字节:

If you're able to use a library, look at using mime-util to inspect the bytes:

http://technopaper.blogspot.com/2009/03/identifying-mime-using-mime-util.html

如果您必须构建自己的字节检测器,这里有许多最流行的起始字节:

If you have to build your own byte detector, here are many of the most popular starting bytes:

"BC" => bitcode,
"BM" => bitmap,
"BZ" => bzip,
"MZ" => exe,
"SIMPLE"=> fits,
"GIF8" => gif,
"GKSM" => gks,
[0x01,0xDA].pack('c*') => iris_rgb,
[0xF1,0x00,0x40,0xBB].pack('c*') => itc,
[0xFF,0xD8].pack('c*') => jpeg,
"IIN1" => niff,
"MThd" => midi,
"%PDF" => pdf,
"VIEW" => pm,
[0x89].pack('c*') + "PNG" => png,
"%!" => postscript,
"Y" + [0xA6].pack('c*') + "j" + [0x95].pack('c*') => sun_rasterfile,
"MM*" + [0x00].pack('c*') => tiff,
"II*" + [0x00].pack('c*') => tiff,
"gimp xcf" => gimp_xcf,
"#FIG" => xfig,
"/* XPM */" => xpm,
[0x23,0x21].pack('c*') => shebang,
[0x1F,0x9D].pack('c*') => compress,
[0x1F,0x8B].pack('c*') => gzip,
"PK" + [0x03,0x04].pack('c*') => pkzip,
"MZ" => dos_os2_windows_executable,
".ELF" => unix_elf,
[0x99,0x00].pack('c*') => pgp_public_ring,
[0x95,0x01].pack('c*') => pgp_security_ring,
[0x95,0x00].pack('c*') => pgp_security_ring,
[0xA6,0x00].pack('c*') => pgp_encrypted_data,
[0xD0,0xCF,0x11,0xE0].pack('c*') => docfile

这篇关于如何从字节数组中提取文件扩展名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆