我目前正在学习使用Yeoman作为生成器的MEAN Stack。我有一个存储在服务器上的PDF文件,我想在浏览器上用对象标签显示它,但我在获取文件的文件路径时遇到问题,因为它总是会干扰路由。 这是文件夹结构:
“uploads”文件夹是我保存所有存储的PDF文件的地方。 从数据库查询,我能够检索文件的相对路径(例如 uploads / pdfs / 3u42il42yv3.pdf )
正如我上面所说,问题是文件路径会干扰路由。我尝试使用Object标签显示它,并使用下面的示例
<object data="{{$ctrl.pdfLink}}" type="application/pdf" width="500px" height="800px"/>
其中$ ctrl.pdfLink引用如下路径: localhost:90000 / uploads / pdfs / 3u42il42yv3.pdf
当我尝试显示它时,Yeoman可能将其误认为路线,从而显示带有路线上传/ pdf的控制器。 (它显示一个网页,而不是pdf文件)
我尝试过使用$ sce.trustAsResourceUrl()并将其传递给tag的“data”参数,不起作用。嵌入src也不行。当我将链接复制粘贴到浏览器时,它也会重定向,因为它是到控制器的路径
因此,简而言之,我如何获得导致PDF的实际链接,以便我可以显示该文件并为其创建下载链接?
感谢任何帮助 谢谢
更新
存储在uploads文件夹中的文件实际上由用户使用Multer上传来存储文件。
更新2
我将上传文件夹移动到了client / uploads / pdfs,并且可以通过链接或嵌入对象使用 domain.com/uploads/pdfs/filename.pdf 来引用它,类似于Assets文件夹,但我不确定这是否是正确的方法。当我要部署它时,这样做是否可行且安全?看到客户端文件夹实际上属于客户端(但图像资产应该放在服务器上,所以它就像是相互矛盾)我不知道实际引用服务器文件夹中的文件夹的方法。我在这里使用Yeoman的Angular Fullstack https://github.com/angular-fullstack/generator-angular-fullstack