2017-10-29 18 views
0

私はpdfkitでexpress.jsを使用していますが、pdfを生成してWebブラウザで強制的にダウンロードしようとしています。express.jsでPDFダウンロードを強制できません

pdfが保存されている静的な場所を定義しましたが、この場所を読み込んでファイルをダウンロードする場合は何も起こりません。私もヘッダーを設定しようとしましたが、うまくいきませんでした。

私は、サーバーとフロントエンドが動作しているポートと関係があると読んでいます。私の場合、これらは次のとおりです。4200(角度)と8080(Node.jsの)

はここでサーバーコードの断片である:

var downl = doc.pipe(fs.createWriteStream('C:/Users/Martyna/Desktop/test pdfow/out.pdf')); 

doc.end(); 

downl.on('finish', function() { 
    res.download('C:/Users/Martyna/Desktop/test pdfow/out.pdf', 'out.pdf'); 
}) 
+0

どのようにして、クライアントからの要求を作っていますか?ブラウザの開発ツールの[ネットワーク]セクションには何が表示されますか:リクエストが表示され、返信が返ってきますか? – skirtle

+0

createAuthHeaders(){ this.loadToken(); this.options =新しいRequestOptions({ ヘッダー:新しいヘッダ({ 'のContent-Type': 'アプリケーション/ JSON' '許可':this.authToken }) })。 } loadToken(){ this.authToken = localStorage.getItem( 'token'); } testGetId(cv:Cv){ this.createAuthHeaders(); this.http.get(this.domain + '/ konto-uzytkownika /' + cv.cvId、this.options)を返します。 \t \t \t \t \t \t \t \t \t:私は、私が追加した – tys

+0

そして、私のdevのツールで 私は適切な応答タイプを取得しますres.writeHead(200、{ \t \t \t \t \t \t \t 'のContent-Type': 'アプリケーション/ PDF' \t \t \t \t \t \t \t 'Content-Disposition': '添付ファイル。 filename = out.pdf ' \t \t \t \t \t \t \t}); コンソールにエラーが表示されます。 エラー:送信後にヘッダーを設定できません。 – tys

答えて

0

あなたはあなたの応答に以下のヘッダを追加する必要があります。ファイルがダウンロードされたのではなく、ファイルがブラウザで表示されなければならないことをブラウザに指示するには

Content-Type: application/pdf 
Content-Disposition: attachment; filename="You_File_Name.pdf" 

を見ました:

Content-Type: application/pdf 
Content-Disposition: inline; filename="You_File_Name.pdf" 
+0

サーバーの応答でそれを設定していないよにもかかわらず 「アプリケーション/ PDF」 :} – tys

+0

あなたは間違ったやり方をしています - res.set( 'Content-Type'、 'application/pdf'); res.set( 'Content-Type'、 'attachment; filename = "You_File_Name.pdf"'); res.sendFile(__ dirname、 'files/out.pdf'); –

+0

あなたが実際に助けたと言ったように、コンテンツタイプとコンテンツの処分を設定する、ありがとう!また、BlobにクライアントサイトのresponseTypeを指定し、http getメソッドでこれを書いた: testGetId(cv:Cv){ this.createAuthHeaders2(); これを返します.http.get(this.domain + '/ konto-uzytkownika /' + cv.cvId、this.options).subscribe(res => { console.log(res) var blob = new Blob {type: 'application/pdf'}); saveAs(blob、 "cv.pdf"); }); } – tys

関連する問題