前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【SAP HANA系列】SAP UI5上传图片 用XSJS存储在HANA中的方法

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

原创
作者头像
matinal
修改2020-11-13 18:12:09
6250
修改2020-11-13 18:12:09
举报
文章被收录于专栏:SAP TechnicalSAP Technical

正文部分

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

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

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

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

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

代码语言:javascript
复制
​
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配置

代码语言:javascript
复制
​
        <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配置

代码语言:javascript
复制
​
        handleUploadPress: function(oEvent) {
            var oFileUploader = this.getView().byId("fileUploader");
            oFileUploader.upload();
        }

​

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

代码语言:javascript
复制
​
    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);
    }    

​

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 正文部分
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档