如何判断存储为XSTRING变量的二进制文件的MIME类型?已尝试指定方法无效
判断XSTRING二进制文件的MIME类型的可行方案
使用
CL_HTTP_UTILITY类的检测方法
这个类的静态方法DETECT_MIME_TYPE_FROM_BINARY能直接基于XSTRING里的二进制内容识别MIME类型,覆盖多数常见文件格式。示例代码:DATA(lv_xstring) = "你的XSTRING变量". DATA(lv_mime_type) = CL_HTTP_UTILITY=>DETECT_MIME_TYPE_FROM_BINARY( lv_xstring ). WRITE lv_mime_type.使用函数模块
SCMS_MIME_TYPE_DETECT
专门用于MIME类型检测的函数模块,支持通过二进制数据直接判断,还能返回对应的文件扩展名。示例代码:DATA: lv_xstring TYPE xstring, lv_mime_type TYPE string, lv_extension TYPE string. lv_xstring = "你的XSTRING变量". CALL FUNCTION 'SCMS_MIME_TYPE_DETECT' EXPORTING binary_content = lv_xstring IMPORTING mime_type = lv_mime_type extension = lv_extension. WRITE: / 'MIME类型:', lv_mime_type, / '扩展名:', lv_extension.如果知道文件的扩展名,还可以传入
extension参数辅助检测,结果会更准确。自定义文件头匹配逻辑
要是遇到上述工具识别不了的小众格式,直接解析XSTRING的前几个字节(文件头特征)就行,不同格式的文件头是固定的。比如JPG头是FFD8FF、PNG是89504E47、PDF是25504446。示例代码:DATA(lv_xstring) = "你的XSTRING变量". DATA(lv_header) TYPE xstring. DATA(lv_mime_type) TYPE string. "提取前4个字节作为文件头 lv_header = lv_xstring(4). CASE lv_header. WHEN '89504E47'. lv_mime_type = 'image/png'. WHEN 'FFD8FF' && '*'. lv_mime_type = 'image/jpeg'. WHEN '25504446'. lv_mime_type = 'application/pdf'. "可以继续添加更多格式的匹配规则 WHEN OTHERS. lv_mime_type = 'application/octet-stream'. ENDCASE. WRITE lv_mime_type.
内容的提问来源于stack exchange,提问作者Cutter
相关产品推荐
相关产品推荐

