HANA系列SAP UI5上传图片 用XSJS存储在HANA中的方法

Posted sapmatinal

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HANA系列SAP UI5上传图片 用XSJS存储在HANA中的方法相关的知识,希望对你有一定的参考价值。

公众号:SAP Technical
本文作者:matinal
 

技术图片

 

前言部分

大家可以关注我的公众号,公众号里的排版更好,阅读更舒适。

正文部分

玩就玩一个高级的,此篇文章包含了SAP UI5,SAP HANA,SAP XS HANA串联起来

业务需求:SAP UI5传输图片,最后存储到HANA中。

下面体验一下梦幻般的做法,O(∩_∩)O哈哈~

1、首先在HANA中创建一个表,用于存储

       schema名:zmatinal。表名:zimage。表里两个字段分别是:name,content。

?
CREATE COLUMN TABLE "ZMATINAL"."ZIMAGE"(
    "NAME" NVARCHAR(100),
    "CONTENT" BLOB MEMORY THRESHOLD 1000,
    PRIMARY KEY (
        "NAME"
    )
) UNLOAD PRIORITY 5 AUTO MERGE;

?

2、用SAP UI5上传图片

 

      其中xml配置

?
        <u:FileUploader
            id="fileUploader"
            name="myFileUpload"
            uploadUrl="upload/"
            width="400px"
            tooltip="Upload your file to the local server"
            uploadComplete="handleUploadComplete"/>
        <Button
            text="Upload File"
            press="handleUploadPress"/>

?


      其中controller配置

?
        handleUploadPress: function(oEvent) 
            var oFileUploader = this.getView().byId("fileUploader");
            oFileUploader.upload();
        

?

3、在XSJS中,只需将该请求读入ArrayBuffer并作为BLOB存储

?
    var schema_name = "ZMATINAL";
    var filename = $.request.parameters.get(‘filename‘);    
    
    
    try 
        var conn = $.db.getConnection();
    
        var pstmt = conn.prepareStatement("INSERT INTO \\"ZMATINAL\\".\\"ZIMAGE\\" (NAME, CONTENT) VALUES (?, ?)");
    
    
        if($.request.entities.length>0) 
            
            //  Read in the posted image or binary data as an Array Buffer - you can use this to save as a BLOB
            var file_body = $.request.entities[0].body.asArrayBuffer();
    
            pstmt.setString(1,filename);  //设置文件名
            pstmt.setBlob(2,file_body);   //图片数据的数组缓冲区
            pstmt.execute();
    
        
        else
        
            $.response.setBody("没有请求条目");
        
        pstmt.close();
        conn.commit();
        conn.close();
        $.response.contentType = "text/html";
        $.response.setBody("[200]:上传文件" + filename + "成功!");
    
    catch(err)
    
        if (pstmt !== null)
        
            pstmt.close();
        
        if (conn !== null)
        
            conn.close();
        
        $.response.contentType = "text/html";
        $.response.setBody("文件无法保存在数据库中,出现错误:" + err.message);
        

?

 

以上是关于HANA系列SAP UI5上传图片 用XSJS存储在HANA中的方法的主要内容,如果未能解决你的问题,请参考以下文章

#私藏项目实操分享# 什么是 SAP HANA XS JavaScript

将HANA XSC应用转换为移动应用?

HANA系列SAP HANA的ini文件存储路径

UI5-学习篇-1-开发工具及环境搭建

SAP UI5 + Yarn = 不运行

UI5-文档-2-开发环境