前言
最近刚好有需求需要将凭证打印以pdf文件上传到OSS,找了很多资料没找到合适的,最合适的也就是Amazon S3,有封装好的ABAP SDK,但是需要basis帮忙安装,自己胡乱搞了一番,成功上传到阿里的个人oss了,记录一下关键代码。
可以到阿里oss(对象存储 OSS_云存储服务_企业数据管理_存储-阿里云 (aliyun.com))申请3个月免费使用,用来测试也方便。也可以去看阿里的API文档(OSS API文档 (aliyuncs.com))。
Postman测试
在正式开发之前,直接使用postman等工具进行测试一番,会更容易理解代码思路。
请求方法:PUT
请求URL:http://bucketName.endpoint或者https://bucketName.endpoint
例如:http://zaaron.oss-cn-shanghai.aliyuncs.com/sap/test.pdf
后缀/sap/*.pdf,在oss中没有文件夹的概念,但是可以用 / 来做分隔符,类似文件夹,该url用在putObjeckt中就是将test.pdf文件存入oss的/sap/路径下。
请求头:必须定义参数 Authorization,Date,Content-Type
Authorization
可以在阿里oss控制台中使用签名工具来做测试,需要构建的参数很多,具体可以搜索S3协议,通用的。
Date
Date参数应遵循RFC 1123标准的日期和时间格式,例如:Tue, 30 Jul 2024 11:00:22 GMT。
Content-Type
本例中因为是pdf,所以直接填写 application/pdf,postman上传文件后可以自动解析,如果是开发时,更改为对应的MIME type即可。
Body
选择binary上传文件
如果以上都正确,即可发送文件到oss中。
ABAP实现
拼接Date参数
DATA: lv_time_ex TYPE string,