2017-01-31 4 views
3

我々は、いくつかの入力パラメータを取得し、それらが処理されるバックエンドに送るAngularアプリケーションを持っています。処理結果は、新しいタブで開くpdfファイルです。BLOB URLのカスタム名

これを行うコードは以下のと似ています:

myService.getDocument(document) 
    .then(function(response) { 
    if (response.error) { 
     // Error handling goes here 
    } else { 
     var file = new BLob([response.data), {type: 'application/pdf'}); 
     var fileURL = URL.createObjectURL(file); 
     $window.open(fileURL, '_blank_'); 
    } 
    }); 

すべてが正常に動作しますが、ブラウザでURLを以下のようにいくつかのランダム生成された文字列を示しています。

blob:http://localhost:3000/85cad96e-e44e-a1f9-db97a96ed3fe 

を明らかにこれは非常に見ていませんエンドユーザーには良いことであり、ユーザーに意味のあるものを表示することをお勧めします。

blob:ftp://localhost:3000/my_document_name_or_whatever 

私はJSの初心者です。Angularの新しい、HTMLの新しいものです。私の質問はあまり素朴ではないと思います。

入力いただきありがとうございます。

答えて

7

短い回答できません。

入力の種類=ファイルを使用してアップロードしたファイルの場合、ブラウザのメモリ、BLOBを保存した場所、または元のファイルへのポインタを示すアドレスです。

これは何とか設計されています。同じBlobから複数のblobURLを作成できます。彼らがURIとしてファイル名を使用する場合、できませんでした。

理論的には、BlobURIにリダイレクトするページを動的に作成する必要があります。このリダイレクトページの名前は任意です。しかしこれは単なる理論であり、決して自分自身でやろうとはしなかった。

コンセプトのラフな証明が this plunkerで見ることができる

、明らかに、あなたは動的blobRename.htmlを生成し、あなたが望むものに社名を変更し、また、それがコンテンツヘッダです強制する必要がありますようにあなたが.htmlを取り除きたいと思えばブラウザはHTMLページだと思っています。 また、ブラウザプラグインが必要なpdfファイルでは動作しないようですが、もう少し作業すれば、がハックする可能性があります。

しかし、とにかく、私はランダムなURLを許可します。ユーザーはますます多くのWebアプリケーションでこの偉大なAPIを使用するようになります。