且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用 ABAP 手动解析包含二进制文件的 multipart/form-data 数据时遇到的问题

更新时间:2022-03-26 22:25:07

文章标题:使用 ABAP 手动解析包含二进制文件的 multipart/form-data 数据时遇到的问题


上下文:参考这篇文章:不使用任何框架,手写纯 JavaScript 实现上传本地文件到 ABAP 服务器。


客户端代码:

使用 ABAP 手动解析包含二进制文件的 multipart/form-data 数据时遇到的问题

服务器端解析出 content-type:


使用 ABAP 手动解析包含二进制文件的 multipart/form-data 数据时遇到的问题

我上传的 PDF 大小为 30129 字节:


使用 ABAP 手动解析包含二进制文件的 multipart/form-data 数据时遇到的问题


CString 和 XString 的大小:


使用 ABAP 手动解析包含二进制文件的 multipart/form-data 数据时遇到的问题


包含了 PDF 和 Excel 数据的 multipart/form-data 数据:


使用 ABAP 手动解析包含二进制文件的 multipart/form-data 数据时遇到的问题


下图调试器里显示内容,红色高亮区域为包含 PDF 的这一块数据的描述信息,绿色高亮区域为 PDF 的实际内容。


使用 ABAP 手动解析包含二进制文件的 multipart/form-data 数据时遇到的问题


我采用字符串拼接的方式,将下图 PDF 的实际内容取出,转换成 XSTRING 格式的数据,另存到本地,发现转换过程出现了错误:


使用 ABAP 手动解析包含二进制文件的 multipart/form-data 数据时遇到的问题


大小都发生了变化:


使用 ABAP 手动解析包含二进制文件的 multipart/form-data 数据时遇到的问题

用文本编辑器打开 PDF 文件查看源代码,下图是原始文件:


使用 ABAP 手动解析包含二进制文件的 multipart/form-data 数据时遇到的问题

下图是 ABAP 服务器接收后再另存到本地的 PDF,可以看到 stream 区域内容明显有区别:

使用 ABAP 手动解析包含二进制文件的 multipart/form-data 数据时遇到的问题