2016-09-13 4 views
0

HTMLコンテンツをバックエンドにアップロードする必要があります(AWS S3にHTMLファイルとして保存します)。Javascript:S3にHTMLをアップロード

私はdocument.implementation.createHTMLDocument()を使用してdocumentオブジェクトを作成しました。今私はS3バケツにHTMLファイルとしてデータを保存するために私のバックエンド(私はBackand-as-a-Serviceを使用しています)とits integration with S3をバックエンドに送る必要がありますが、私はそのプロセスに苦労しています。

私はこれは私が(私が間違っているか、簡単な方法があるなら、私を修正してください)何をする必要があるかである数える

  1. <!doctype HTML>を含む文字列(ファイルの内容にdocumentオブジェクトを変換宣言) - 使用htmlString = '<!DOCTYPE html>\n' + document.documentElement.outerHTML;
  2. 文字列をBLOBに変換する - new Blob([htmlString], 'text/html');文字列として送信することはできますか?
  3. httpバックエンドへのBlob。
  4. HTML文字列に変換し直しますか?
  5. S3バケットにアップロードします。

正しい方向のポインタがあれば幸いです!将来の読者のために

+0

私はブロブあるいは単なる文字列のために行くと言うでしょう、base64では、より多くのオーバーヘッドと〜3倍大きいです – Endless

答えて

1

...いくつかは遊んでた後、それはあまりにも難しいことではありませんでした:

  1. (上記の通り)HTML文字列にdocumentに変換(window.btoa()を使用してベース64としてそれをエンコードS3(デコードする必要はありません)
  2. にバックエンド
  3. への塊の必要性)
  4. HTTPバックエンドのアップロードなし

:-)は、ここ(のようなもの)だ私は終わっコード:

var doc = document.implementation.createHTMLDocument('Document Title'); 
    // ... Do stuff to the document ... 
var html = '<!DOCTYPE html>\n' + doc.documentElement.outerHTML; 
var filedata = window.btoa(html); 

// http call to my server (Backand) using Angular $http 

$http({ 
    method: 'POST', 
    url: Backand.getApiUrl() + '/1/objects/action/<objectname>/name=uploadToS3', 
    headers: { 
     'Content-Type': 'application/json' 
    }, 
    data: { 
     'filename': 'folder/filename.html', 
     'filedata': filedata 
    } 
}).then(....); // etc. 
関連する問題