上传本地文件为二进制,并转为xstring格式
"-----------------------------@斌将军-----------------------------CALL FUNCTION 'GUI_UPLOAD'EXPORTINGfilename= lv_filefiletype= 'BIN'IMPORTINGfilelength= lv_filelengthTABLESdata_tab= lt_binEXCEPTIONSfile_open_error= 1file_read_error= 2no_batch= 3gui_refuse_filetransfer = 4invalid_type= 5no_authority= 6unknown_error= 7bad_data_format= 8header_not_allowed= 9separator_not_allowed= 10header_too_long= 11unknown_dp_error= 12access_denied= 13dp_out_of_memory= 14disk_full= 15dp_timeout= 16OTHERS= 17.IF sy-subrc <> 0.e_return-type = 'E'.e_return-message = '读取文件失败'.RAISE error.ENDIF.CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'EXPORTINGinput_length = lv_filelengthIMPORTINGbuffer= lv_xstringTABLESbinary_tab= lt_binEXCEPTIONSfailed= 1OTHERS= 2."-----------------------------@斌将军-----------------------------将文件流放入client中并发送,接收返回结果
"-----------------------------@斌将军-----------------------------lv_len = xstrlen( lv_xstring ).CALL METHOD lo_part->set_dataEXPORTINGdata= https://www.huyubaike.com/biancheng/lv_xstringoffset = 0length = lv_len."发送CALL METHOD lo_http_client->sendEXCEPTIONShttp_communication_failure = 1http_invalid_state= 2http_processing_failed= 3OTHERS= 4.IF sy-subrc <> 0.CALL METHOD lo_http_client->get_last_errorIMPORTINGmessage = DATA(lv_error_message).CALL METHOD lo_http_client->close.e_return-type = 'E'.e_return-message = '通信失败'.RAISE error.ENDIF."接收CALL METHOD lo_http_client->receiveEXCEPTIONShttp_communication_failure = 1http_invalid_state= 2http_processing_failed= 3OTHERS= 9.IF sy-subrc <> 0.CALL METHOD lo_http_client->get_last_errorIMPORTINGmessage = lv_error_message.CALL METHOD lo_http_client->close.e_return-type = 'E'.e_return-message = '接收失败'.RAISE error.ENDIF."提取返回字符串CLEAR:lv_code,lv_reason.CALL METHOD lo_http_client->response->get_statusIMPORTINGcode= lv_codereason = lv_reason."获取返回的JSONCLEAR:lv_rec_json.lv_rec_json = lo_http_client->response->get_cdata( )."关闭接口CALL METHOD lo_http_client->close."-----------------------------@斌将军-----------------------------3、补充说明3.1、文件类型在设置上传文件的类型时需要注意
文章插图
【ABAP 调用HTTP上传附件】文件有对应的类型参数,例如:
TXT:text/plain
Excel:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Word:application/vnd.openxmlformats-officedocument.wordprocessingml.document
PDF:application/pdf
PNG:image/png
应用程序:application/octet-stream
测试得出以下结论:(可能有出入,仅供参考)
1、如果上传文件时,设置了对应的参数,
1.1、且浏览器支持预览,则访问文件地址时,直接能在浏览器中显示文件的内容,比如:TXT、PDF、PNG等
1.2、如果浏览器不支持预览,则访问文件地址时,浏览器会自动下载对应的文件到本地,比如Excel、Word、应用程序等
2、如果上传文件时,没有设置对应的参数,比如直接设置application/x-www-form-urlencoded、application/octet-stream,就算是TXT文件,浏览器也不会支持预览,直接下载
3、如果上传文件时,没有设置正确的参数,比如Excel文件,设置了text/plain参数,则会导致文件识别失败,浏览器既不下载也不能正确预览
3.2、参数细节关于参数中的q=0.8
文章插图
q:相对品质因数 。它指定用户喜欢哪种语言,范围从0到1,默认为1 。
该质量值表示用户对由该范围指定的语言的偏好的估计
TRANSLATE with
xEnglish
经验总结扩展阅读
- 真正“搞”懂HTTP协议03之时间穿梭
- FHE学习笔记 #2 多项式环
- django-environ学习
- 新房除甲醛开空调用哪种模式 开空调除甲醛一次开几小时
- GNN 101
- Nginx 使用自签名证书实现 https 反代 Spring Boot 中碰到的页面跳转问题
- day08-XML
- golang中的错误处理
- <一>从指令角度了解函数堆栈调用过程
- 真正“搞”懂HTTP协议02之空间穿梭