2013-05-03 1 views
5

J'essaie d'implémenter un téléchargement de fichier dans une application UI5 sur un serveur HANA XS. Je ne trouve pas beaucoup d'informations sur la façon de le faire - quelqu'un a une idée?Téléchargement de fichier SAP HANA XS avec UI5

+0

Essayez https: // uploadcare. com /, je l'utilise pour gérer les téléchargements d'utilisateurs et vraiment heureux que je n'ai pas à gérer cela moi-même. – Fedor

Répondre

6

est ici simple mise en œuvre d'un téléchargement de fichier texte brut:

js côté client:

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); 
} 

Et voici le service du Serverside:

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

Que faire si je veux envoyer un tableau d'objet json? Comment puis-je y accéder sur HANA? Lorsque j'envoie des données en utilisant ajax post, je ne vois pas les données sur hana. Par exemple - 'type:" PUT ", processData: false, contentType: fichier.type, data: objectArray', Des suggestions? – user557657

0

Il n'existe aucun service "prêt à consommer" de XS qui vous permet de le faire. Vous pouvez bien sûr créer une table dans HANA DB, créer un BLOB de type colonne, puis créer un service sur XS qui vous permet de télécharger le fichier depuis votre frontal. J'espère que ça aide.

Questions connexes