文章标题:使用 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的原创文章,尽在:"汪子熙":
网友评论