[解決済み] AngularJSアプリでブロブ(.pdf)を表示する方法
質問
からの blob として取得した pdf ファイルを表示しようとしています。
$http.post
というレスポンスが返ってきます。この pdf は、アプリ内で
<embed src>
を使って表示する必要があります。
私はいくつかのスタック投稿に出くわしましたが、どういうわけか私の例はうまくいかないようです。
JSです。
によると この文書 に従って、私は続けて試してみました...
$http.post('/postUrlHere',{myParams}).success(function (response) {
var file = new Blob([response], {type: 'application/pdf'});
var fileURL = URL.createObjectURL(file);
$scope.content = fileURL;
});
さて、私が理解したところでは
fileURL
は、ブログが参照として使用できる一時的な URL を作成します。
HTMLです。
<embed src="{{content}}" width="200" height="200"></embed>
Angularでこれをどのように処理するかは分かりませんが、理想的な状況は、以下のようになります。
(1)
スコープに割り当てることです。
(2)
blobをpdfに「準備/再構築」する。
(3)
を使ってHTMLに渡します。
<embed>
を使ってHTMLに渡します。
もう1日以上調べているのですが、なぜかAngularでこれがどう動くのか理解できないようです...。そして、そこにあるpdfビューアライブラリは選択肢になかったと仮定しましょう。
どのように解決するのですか?
まず最初に
responseType
を
arraybuffer
. これは、データのブロブを作成する場合に必要です。参照
バイナリデータの送信と受信
. ですから、あなたのコードは次のようになります。
$http.post('/postUrlHere',{myParams}, {responseType:'arraybuffer'})
.success(function (response) {
var file = new Blob([response], {type: 'application/pdf'});
var fileURL = URL.createObjectURL(file);
});
次に、この部分を $sce サービスを使用して、アンギュラーにあなたのURLを信頼させることです。これは、この方法で行うことができます。
$scope.content = $sce.trustAsResourceUrl(fileURL);
を注入することを忘れないでください。 $sce サービスを注入することを忘れないでください。
これですべて完了したら、pdfを埋め込むことができます。
<embed ng-src="{{content}}" style="width:200px;height:200px;"></embed>
関連
-
[解決済み] プリフライト応答が成功しない
-
[解決済み] Angular ng-repeat エラー "リピータ内の重複は許可されません。"
-
[解決済み] AngularJsでng-Cloakディレクティブを実際に使用する方法とは?
-
[解決済み] エラーです。[$injector:unpr] 不明なプロバイダです。ルートプロバイダ
-
[解決済み] AngularJS: ngRouteが動作しない。
-
[解決済み] AngularJSでデータバインディングはどのように機能するのですか?
-
[解決済み] PDFファイルの適切なMIMEメディアタイプ
-
[解決済み] HTMLにPDFを埋め込むおすすめの方法とは?
-
[解決済み] AngularJSを使用して、ブラウザのコンソールで$scope変数にアクセスするにはどうすればよいですか?
-
[解決済み] AngularJSで$scope.$watchと$scope.$applyを使用するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] select 要素のデフォルト値を設定するための ng-option の使用方法
-
[解決済み] Angular ng-repeat エラー "リピータ内の重複は許可されません。"
-
[解決済み] シンプルなangularjsの日付入力
-
[解決済み] AngularJSでkeypressイベントを使用するには?
-
[解決済み] ディレクティブ '...' が要求するコントローラ 'ngModel' が見つかりません。
-
[解決済み] AngularJS : ローカルストレージを使用する
-
[解決済み] Angularのui-routerでデフォルトの状態を設定する方法
-
angularjs統合ueditor入門
-
[解決済み] angular.serviceとangular.factoryの比較
-
[解決済み] 入力フィールドにフォーカスを当てるには?