Frage SAP HANA XS Datei-Upload mit UI5


Ich versuche, einen Datei-Upload in einer UI5-Anwendung auf einem HANA XS Server zu implementieren. Ich kann nicht viele Informationen finden, wie man das macht - hat jemand eine Idee?


5
2018-05-03 07:51


Ursprung


Antworten:


Hier ist die einfache Implementierung eines einfachen Textdatei-Uploads:

Clientseite js:

doUpload: function() {
    var uploadField = document.getElementById("ulUploader1-fu");
    var file = uploadField.files[0];

    var reader = new FileReader();
    reader.onload = function (event) {
    var source = event.target.result; // this is the binary values
    var name = file.name;      

    $.ajax({
        url: "/services/upload.xsjs?cmd=Import",
        type: "PUT",
        processData: false,
        contentType: file.type,
        data: source,
        xhr: function() {
            var req = $.ajaxSettings.xhr();
            if (req) {
                if (req.overrideMimeType) {
                    req.overrideMimeType('text/plain; charset=x-user-defined');
                }
                if (req.sendAsBinary) {
                    req.send = req.sendAsBinary;
                }
            }
            return req;
        },
        error: function(xhr, textStatus, errorThrown){
            alert(xhr.responseText);
        },
        success: function() {
            reader.onload = null;
        }
        });
    };
    reader.readAsText(file);
}

Und hier ist der serverseitige xsjs-Service:

    function doImport() {
    var data = '', conn = $.db.getConnection(), pstmt;  

    if($.request.body){
        data = $.request.body.asString();     
    }

    var conn = $.db.getConnection();
    var pstmt = conn.prepareStatement( 'INSERT INTO "TEST"."UPLOAD" (ID, MIMETYPE, DATA) VALUES(?,?,?)' );

    pstmt.setInteger(1,1);
    pstmt.setString(2,"text/plain");
    pstmt.setString(3,data);

    pstmt.execute();
    pstmt.close();

    conn.commit();
    conn.close();

    doResponse(200,'');

    $.response.contentType = 'text/plain';
    $.response.setBody('Upload ok');
    $.response.status = 200;
}

6
2017-07-01 13:31



Es gibt keinen "ready-to-consume" -Service von XS, mit dem Sie das tun können. Sie können natürlich eine Tabelle in der HANA DB erstellen, ein spaltenartiges BLOB erstellen und dann einen Dienst auf XS aufbauen, mit dem Sie eine Datei von Ihrem Frontend hochladen können. Ich hoffe das hilft.


0
2018-05-29 20:40