2017-05-16 4 views
1

プラグインを使用してSAPUI5アプリケーションからSAP Http Content Serverに画像をアップロードしようとしています。 これまでのところ、私がアップロードしたときに、それが成功コード(200)を返すと、以下のメッセージ:Cordova File Transferプラグインを使用してSAPコンテンツサーバにアップロードできません

Component img1 in Document 0000000018 updated 

のプラグインは、画像のサイズと同じであるbytesentと成功コードで応答を与えるので、私はでしたイメージがアップロードされていると仮定します。

しかし、get機能を使用して画像を取得すると、何もありません。体は空だった。 Webブラウザを使用すると空のContentServer.dllファイルがダウンロードされ、Postmanを使用すると応答本体は空になります。 AFAIKは、そのような成功したケースでは、身体はイメージであり、郵便配達員の場合、レスポンスのボディにイメージのバイナリ形式が与えられます。

写真が正常に取得され
takePhoto: function() { 
navigator.camera.getPicture(onCapturePhoto, onFail, { 
      quality: 100, 
      destinationType: destinationType.FILE_URI 
     }); 
} 

が、それはonCapturePhoto関数を呼び出します。私のコードの場合

、私は以下のように写真を撮るためにコルドバカメラ(私はメディアキャプチャが、同じ問題を試してみました)プラグインを使用しました

 function onCapturePhoto(fileURI) { 

      var options = new FileUploadOptions(); 
      options.fileKey = "file"; 
      options.httpMethod = "PUT"; 
     ** This line below solved my first problem but still cannot solve the 
       original problem as my Update1 mentioned** 
      options.chunkedMode = false; 
      options.fileName = fileURI.substr(fileURI.lastIndexOf('/') + 1); 
      options.mimeType = "image/jpeg"; 
      options.params = {}; // if we need to send parameters to the server request 

      var win = function(r) { 
       console.log(r); 
       console.log(fileURI); 
      }; 

      var fail = function(error) { 
       console.log(error); 
       alert('Ups. Something wrong happens!'); 
      }; 
      var ft = new FileTransfer(); 
      var url = "http://serverIP:1090/ContentServer/ContentServer.dll?update&pVersion=0046&contRep=Z1&docId=0000000018&compId=img1"; 
      ft.upload(fileURI, url, win, fail, options); 
} 

何とかデータがサーバーに転送されなかったと思います。そのため、本文は常に空です。しかし、私は構文が正しいことを確信しています、少なくともエラーを出さないように。したがって、私は完全に混乱しています。何か提案してください。

Update1:​​これまで私は問題を発見しました。それは、空の応答本体を与えるoptions.chunkedModeでした。今私は私の応答体を見ることができます。しかし、問題は私の体は画像としてレンダリングされていませんが、ContentServer.dllです。私はアップロードコードがこれに責任があると思います。どういうわけか、データがアップロードされるときに正しい画像フォーマットを持っていない。なにか提案を?

答えて

0

私は最終的にこれに対する答えを見つけました。いくつかの顧客ヘッダを追加することで(私の場合はContent-Typeを追加します)、回答ボディに表示されるContent-Dispositionを引き起こすmultipart/form-dataを無効にしました。これは応答が害を受け、開くことができないという問題につながります。今はすべてがかなり良いようです。誰かがコルドバFileTransferプラグインを使用してSAPコンテンツサーバにアップロードしたいのであれば、私はいくつかのポイントを要約します:

  • をfalseにFileTransferOptionchunkedModeを設定します。 SAPコンテンツサーバは、少なくともhttpMethod = "PUT" AFAIKのチャンクデータを受け入れません。
  • BASISチームがSAPCSをどのようにインストールするかによって、trustAllHosts = trueを設定することができます。私はこの部分についてはわかりませんが、とにかくSAPCSは主に社内での使用のため、trustAllHosts = trueは作業を簡単にします。問題が間違っているとわかったら私を修正してください!
  • デフォルトでは、要求のContent-Typemultipart/form-dataとなり、SAPCSにはいくつかのヘッダーデータが応答本文に格納されます。これにより、記憶されたデータが不一致になり、害を被るという問題が生じる。これを修正してデータを正しく保存するには、追加する必要があります。

    headers = { 
    "Content-Type": "image/jpg" //This is equivalent to mimeType so you can put that option here, in my case "image/jpg" 
    } 
    

    これは私のケースでは機能します。私はまだネットワーク接続が遅いという点で性能をテストしていないので、将来的に性能を向上させる必要があるかもしれません。

関連する問題