文章标题:使用 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/form-data 数据时遇到的问题相关推荐

  1. 如何使用 ABAP 手动解析 multipart/form-data 格式的数据

    文章标题:如何使用 ABAP 手动解析 multipart/form-data 格式的数据 上下文:参考这篇文章:不使用任何框架,手写纯 JavaScript 实现上传本地文件到 ABAP 服务器. ...

  2. 1. 恼人的Multipart form data

    文章目录 1. 概述 2. 问题 3. 解决方案 3.1 解决方案一 3.2 解决方案二 3.3 解决方案三 4. 总结 1. 概述 我目前在公司负责开放平台项目,使用spring-cloud-gat ...

  3. 服务器write后客户端响应,客户端解析服务器响应的multipart/form-data数据

    multipart/form-data,多部件请求体.这个请求体比较特殊,它可以拆分为多个部件,每个部件都有自己的header和body,最常用的地方就是:客户端文件上传,因为有多个部件,在上传文件的 ...

  4. 服务器解析form中文件,客户端解析服务器响应的multipart/form-data数据

    multipart/form-data,多部件请求体.这个请求体比较特殊,它可以拆分为多个部件,每个部件都有自己的header和body,最常用的地方就是:客户端文件上传,因为有多个部件,在上传文件的 ...

  5. php 解析http,用PHP手动解析原始HTTP数据

    好的,所以Dave和Everts的建议我决定手动解析原始请求数据.搜索约一天后,我没有找到任何其他方式来做到这一点. 我从这个thread获得了一些帮助.我没有任何运气篡改原始数据,就像在引用的线程中 ...

  6. c# url传参不能包含html标签,c#解析包含HTML特殊字符的字符串XElement

    在客户端的服务器+ GWT上使用.NET c#,我有一个Web窗体,它接受用户输入,然后构建一个XML字符串并将其存储在数据库中.然后我需要从数据库中读取它,通过tcp将它发送到手持设备,并将其解析为 ...

  7. 手动编译包含两个import自写类的java类。

    手动编译包含两个import自写类的java类. cmd (1)e: (2)cd E:\tomcat\apache-tomcat-7.0.79-windows-x64\apache-tomcat-7. ...

  8. MediaPlayer 同步加载字幕 与 手动解析字幕

    通过把 字幕文件传给MediaPlayer  , media 可以在自动的适配字幕, 在正确的时间点, 给我们 当前应该显示的字幕回调 不过只能在 API 16 以上才能使用  mMediaPlaye ...

  9. 区块链 以太坊 交易结构、执行、存储 解析 交易中为什么没有包含发送者地址这条数据

    一. 交易的结构 1. Transaction结构 交易结构定义在 core/types/transaction.go 中: type Transaction struct {//交易数据data t ...

最新文章

  1. RANSAC鲁棒参数估计
  2. VTK:多数据点用法实战
  3. spring 2.0核心技术与最佳实践 pdf_推荐 Spring Boot 实践学习案例大全 数据缓存 和中间件 安全权限...
  4. MySQL(18)--- UNION 操作符
  5. python使用 GPUs
  6. github的学习和使用
  7. [导入]Nebula3学习笔记(6): IO实战, ZIP解压缩程序
  8. Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析(5)
  9. C#局域网聊天软件 适合公司内部聊天 类qq旺旺 可实时监控桌面 商用
  10. gis怎么提取水系_ArcGIS提取水系并进行生态敏感性分析
  11. springboot基于web的游泳馆信息管理系统毕业设计源码281444
  12. bootbox.js中confirm()方法的使用
  13. 深度内幕丨揭秘积分墙新颖反作弊
  14. 如何通过给MM修电脑培养感情
  15. Python代码实现将png格式图片批量转换为jpg个格式
  16. Linux CentOS 7网络配置基础
  17. 《职场正能量》读后感
  18. 分享一个Joda-Time日期时间工具类
  19. win10如何设置锁屏时间
  20. 粗糙漫画网站(真的粗糙)之首页设计

热门文章

  1. mysql中的extract()函数
  2. Disruptor并发框架--学习笔记
  3. 如何处理Docker错误消息:please add——insecure-registry
  4. 【翻译】What is State Machine Diagram(什么是状态机图)?
  5. runloop解决Cell上主线程卡顿
  6. HBase原理-要弄懂的sequenceId
  7. 不止性能优化,移动端 APM 产品研发技能
  8. 解决VS2010子目录中的.cpp文件引用上一级目录的stdafx.h找不到定义的问题
  9. Fibonacci递归非递归方法
  10. VMware 7.1.4安装Mac.OS.X.Lion.操作系统 key:安装 系统