美文网首页SAP
使用 ABAP 手动解析包含二进制文件的 multipart/f

使用 ABAP 手动解析包含二进制文件的 multipart/f

作者: _扫地僧_ | 来源:发表于2021-12-14 09:41 被阅读0次

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

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

客户端代码:

<html>
<form enctype="multipart/form-data" method="post" name="fileinfo">
 <div>
 <label for="pdf">PDF</label>
 <input id="pdf" type="file" name="pdf" required /></div>
 <div>
 <label for="excel">Excel</label>
 <input id="excel" type="file" name="excel" required /></div>
</form>
<div id="output"></div>
<a href="javascript:sendForm()">Upload the file!</a>
<script>
function sendForm() {
 var oOutput = document.getElementById("output");
 var oData = new FormData(document.forms.namedItem("fileinfo"));

 var oReq = new XMLHttpRequest();
 oReq.open("POST", "https://jerry.corp:44354/sap/crm/file_upload?id=55824", true);
 oReq.onload = function(oEvent) {
   if (oReq.status == 200) {
     oOutput.innerHTML = "Uploaded!";
   } else {
     oOutput.innerHTML = "Error " + oReq.status + " occurred uploading your file.<br \/>";
   }
 };
 oReq.send(oData);
}
</script>
</html>

服务器端解析出 content-type:


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

CString 和 XString 的大小:

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

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

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

大小都发生了变化:


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


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


更多Jerry的原创文章,尽在:"汪子熙":


相关文章

网友评论

    本文标题:使用 ABAP 手动解析包含二进制文件的 multipart/f

    本文链接:https://www.haomeiwen.com/subject/jqbozltx.html