使用 ABAP 手动解析包含二进制文件的 multipart/form-data 数据时遇到的问题
文章标题:使用 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 数据时遇到的问题相关推荐
- 如何使用 ABAP 手动解析 multipart/form-data 格式的数据
文章标题:如何使用 ABAP 手动解析 multipart/form-data 格式的数据 上下文:参考这篇文章:不使用任何框架,手写纯 JavaScript 实现上传本地文件到 ABAP 服务器. ...
- 1. 恼人的Multipart form data
文章目录 1. 概述 2. 问题 3. 解决方案 3.1 解决方案一 3.2 解决方案二 3.3 解决方案三 4. 总结 1. 概述 我目前在公司负责开放平台项目,使用spring-cloud-gat ...
- 服务器write后客户端响应,客户端解析服务器响应的multipart/form-data数据
multipart/form-data,多部件请求体.这个请求体比较特殊,它可以拆分为多个部件,每个部件都有自己的header和body,最常用的地方就是:客户端文件上传,因为有多个部件,在上传文件的 ...
- 服务器解析form中文件,客户端解析服务器响应的multipart/form-data数据
multipart/form-data,多部件请求体.这个请求体比较特殊,它可以拆分为多个部件,每个部件都有自己的header和body,最常用的地方就是:客户端文件上传,因为有多个部件,在上传文件的 ...
- php 解析http,用PHP手动解析原始HTTP数据
好的,所以Dave和Everts的建议我决定手动解析原始请求数据.搜索约一天后,我没有找到任何其他方式来做到这一点. 我从这个thread获得了一些帮助.我没有任何运气篡改原始数据,就像在引用的线程中 ...
- c# url传参不能包含html标签,c#解析包含HTML特殊字符的字符串XElement
在客户端的服务器+ GWT上使用.NET c#,我有一个Web窗体,它接受用户输入,然后构建一个XML字符串并将其存储在数据库中.然后我需要从数据库中读取它,通过tcp将它发送到手持设备,并将其解析为 ...
- 手动编译包含两个import自写类的java类。
手动编译包含两个import自写类的java类. cmd (1)e: (2)cd E:\tomcat\apache-tomcat-7.0.79-windows-x64\apache-tomcat-7. ...
- MediaPlayer 同步加载字幕 与 手动解析字幕
通过把 字幕文件传给MediaPlayer , media 可以在自动的适配字幕, 在正确的时间点, 给我们 当前应该显示的字幕回调 不过只能在 API 16 以上才能使用 mMediaPlaye ...
- 区块链 以太坊 交易结构、执行、存储 解析 交易中为什么没有包含发送者地址这条数据
一. 交易的结构 1. Transaction结构 交易结构定义在 core/types/transaction.go 中: type Transaction struct {//交易数据data t ...
最新文章
- RANSAC鲁棒参数估计
- VTK:多数据点用法实战
- spring 2.0核心技术与最佳实践 pdf_推荐 Spring Boot 实践学习案例大全 数据缓存 和中间件 安全权限...
- MySQL(18)--- UNION 操作符
- python使用 GPUs
- github的学习和使用
- [导入]Nebula3学习笔记(6): IO实战, ZIP解压缩程序
- Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析(5)
- C#局域网聊天软件 适合公司内部聊天 类qq旺旺 可实时监控桌面 商用
- gis怎么提取水系_ArcGIS提取水系并进行生态敏感性分析
- springboot基于web的游泳馆信息管理系统毕业设计源码281444
- bootbox.js中confirm()方法的使用
- 深度内幕丨揭秘积分墙新颖反作弊
- 如何通过给MM修电脑培养感情
- Python代码实现将png格式图片批量转换为jpg个格式
- Linux CentOS 7网络配置基础
- 《职场正能量》读后感
- 分享一个Joda-Time日期时间工具类
- win10如何设置锁屏时间
- 粗糙漫画网站(真的粗糙)之首页设计
热门文章
- mysql中的extract()函数
- Disruptor并发框架--学习笔记
- 如何处理Docker错误消息:please add——insecure-registry
- 【翻译】What is State Machine Diagram(什么是状态机图)?
- runloop解决Cell上主线程卡顿
- HBase原理-要弄懂的sequenceId
- 不止性能优化,移动端 APM 产品研发技能
- 解决VS2010子目录中的.cpp文件引用上一级目录的stdafx.h找不到定义的问题
- Fibonacci递归非递归方法
- VMware 7.1.4安装Mac.OS.X.Lion.操作系统 key:安装 系统