我有这个Grails项目,我需要在其中从端点获得的路径读取文件。
显然chrome阻止了“不允许加载本地资源”,因此我不能仅使用href来在浏览器中读取pdf文件。我需要在pdf文件中显示一个新的浏览器窗口,但没有任何帮助。
def link = "path"
def file = new File(link)
response.setContentType("application/pdf")
response.setHeader("Content-disposition", "attachment;filename=gdoc.pdf")
response.outputStream << file.newInputStream()
这是我所拥有的,但似乎无法读取我的文件,尽管可以从浏览器访问它,但总会得到“没有这样的文件或目录”。
答案 0 :(得分:0)
据我了解,您正在尝试在用户和pdf之间实现“代理”,以创建新的Grails控制器。
由于错误消息是“没有这样的文件或目录”,我怀疑当您尝试执行File = new File("path")
时服务器中出现了此错误...所以您确定服务器中有一个名为“ path”的子文件夹“ grails应用程序在哪里运行?
答案 1 :(得分:0)
依赖性注入ResourceLoader
bean,并使用它来访问PDF,例如
import org.springframework.context.ResourceLoaderAware
import org.springframework.core.io.Resource
import org.springframework.core.io.ResourceLoader
class MyService implements ResourceLoaderAware {
ResourceLoader resourceLoader
InputStream getPdfContent() {
Resource pdf = resourceLoader.getResource("classpath:path/toPdf.p12")
pdf.inputStream
}
}