2013-05-03 16 views
5

HANA XS ServerのUI5アプリケーションでファイルアップロードを実装しようとしています。 私はそれをする方法を多くの情報を見つけることができません - 誰かがアイデアを持っていますか?SAP HANA XS UI5を使用したファイルアップロード

+0

HTTPSをお試しください:// uploadcare。 com /、私はユーザーのアップロードを処理するためにそれを使用しており、私はこれを自分で処理する必要はありません本当に幸せ。 – Fedor

答えて

6

ここでは、プレーンテキストファイルアップロードの簡単な実装です:

クライアントサイドの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); 
} 

そしてここでは、サーバーサイドxsjsサービスです:

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; 
} 
+0

jsonオブジェクトの配列を送信したいのですが?ハナでどのようにアクセスできますか?私がajax投稿を使用してデータを送信すると、私はハナのデータを見ることができません。例: 'type:" PUT "、 processData:false、 contentType:file.type、 data:objectArray'、何か提案がありますか? – user557657

0

XSの「ready-to-consume」サービスはありません。もちろん、HANA DBにテーブルを作成し、列タイプのBLOBを作成し、フロントエンドからファイルをアップロードできるXSでサービスを構築することができます。私はそれが助けて欲しい