0
我有一個應用程序,其中前端是在angularjs和後端與symfony開發的。angularjs無法顯示api文件
我需要有這樣一個路徑:http://example.com/api/invoices/file?file=foo
所以我有這個我FileController內:
/**
* Matches /invoices/file/{filename} exactly
*
* @Route("/invoices/file/{filename}", name="get_invoice_file")
*/
public function getInvoiceFileAction(string $filename, Request $request)
{
$path = $this->get('kernel')->getRootDir() . '/../web/uploads/invoices/' . $filename;
if (!file_exists($path)) {
return new Response('file not found', 404);
}
$file = file_get_contents($path);
$headers = [
'Content-Type' => 'application/pdf',
'Conteng-Length' => filesize($path)
];
return new Response($file, 200, $headers);
}
裏面我angularjs應用程序我有這個讓我的前端控制器內的響應:
vm.getInvoices = function() {
vm.loading = true;
apiResolver.resolve('[email protected]', { "file": vm.searchFile }).then(function(response) {
vm.loading = false;
var file = new Blob([response], {type: 'application/pdf'});
var fileURL = URL.createObjectURL(file);
vm.file = $sce.trustAsResourceUrl(fileURL);
});
};
轉到我的網頁我有這個:
<embed ng-src="{{vm.file}}" style="width:200px;height:200px;"></embed>
當我呈現頁面時,我看到一個200響應,所以文件存在,但到html中我有一個空的空間,而不是PDF文件。 內嵌入標籤有這樣的:
<embed style="width:200px;height:200px;" ng-src="blob:http://localhost:3000/d32d87d1-6582-42e3-85ae-dc174ca5a473" src="blob:http://localhost:3000/d32d87d1-6582-42e3-85ae-dc174ca5a473">
如果我複製一個瀏覽器中的URL返回我不能加載文件。
後端和前端位於不同的文件夾中,並且pdf不能通過公共鏈接查看這些頁面受到jwt系統的保護。
如何在頁面內顯示pdf? 我做錯了什麼?
我想如果令牌文件已經由前端下載不是必需的。讓我知道如果上面的答案適合你 –
沒有改變嵌入對象不工作對不起 –