2017-10-28 5 views
0

私は事前署名されたURLを使用してS3からファイルをダウンロードしているMeteorアプリケーションを持っています(API呼び出しで生成する必要があります)。ポップアップブロッカーのない事前署名されたURLからS3ファイルをダウンロード

私は、私は次のように私のコードを変更し、ポップアップブロッカーは、AWS-SDKによって生成されたURLを開く新しいタブを防止することで問題を抱えていた

:このコードは、ほとんどのために働いている

downloadDocument(document, event) { 
    // open tab immediately to prevent popup blocker 
    const myNewTab = window.open(); 

    // call method to generate url 
    Meteor.call('Events.Methods.Document.Download', { key: document.key, eventId: event._id }, (error, res) => { 
     if (error) { ... } // removed handle error code 

     // if url generated, set tab location to url 
     if (res) myNewTab.location.href = res; 

     // auto close the tab after 1 second 
     myNewTab.setTimeout(() => { myNewTab.close(); }, 1000); 
    }); 
} 

非常にきれいな気がしません。 API呼び出しに1秒以上かかる場合(遅いインターネット)には、タブが閉じてからダウンロードが開始されます。

タブを閉じる前にダウンロードを待つことができるように変更するにはどうすればよいですか?または、ポップアップブロッカーが問題にならずにダウンロードを確実に行うことができる同様のソリューションですか?

おかげ

答えて

1

は、あなたはいつもあなたが新しいウィンドウを開く場合は、ポップアップブロッカーの抵触を実行しようとしています。

downloadプロパティを使用して<a href="my-custom-server-generated-url" download>リンクを生成すると、新しいウィンドウを表示せずにダウンロードが強制されます。

その後も

+0

(最初の場所で良い方法はなかった)タイマーにウィンドウを閉じる必要はありません。私もそれはだ、のhrefで 'download'プロパティ知りませんでしたクール! –

+0

ええ、私は最近それを発見したばかりです。素晴らしい機能です。あなたの問題を解決した場合、答えを正しいとマークしてください。 – Mikkel

+0

答えをありがとう、問題は生成されているURLがセキュリティ上の予防措置として10秒間有効であるということです...しかし、私は 'download'プロパティいずれにしてもそれはありがとう! – Sean

関連する問題