File Grails在部署war时无法找到pdf资源
我正在controller中编写一个从webapp目录下载pdf的操作。当我使用runapp命令运行应用程序时,它运行得非常好。但当我创建一个war时,它抛出浏览器上找不到文件的错误。我的代码如下File Grails在部署war时无法找到pdf资源,file,grails,web-applications,path,File,Grails,Web Applications,Path,我正在controller中编写一个从webapp目录下载pdf的操作。当我使用runapp命令运行应用程序时,它运行得非常好。但当我创建一个war时,它抛出浏览器上找不到文件的错误。我的代码如下 def pdfDownlod ={ def pdfFileName=params.pdfFileName def pdfFile = new File('web-app/sales/resources/pdf/'+pdfFileName) response.set
def pdfDownlod ={
def pdfFileName=params.pdfFileName
def pdfFile = new File('web-app/sales/resources/pdf/'+pdfFileName)
response.setContentType("application/pdf")
response.setHeader("Content-disposition", "attachment; filename=${pdfFileName}")
response.outputStream << pdfFile?.getBytes()
response.outputStream.flush()
return
}
def pdfDownlod={
def pdfFileName=params.pdfFileName
def pdfFile=新文件('web-app/sales/resources/pdf/'+pdfFileName)
response.setContentType(“application/pdf”)
setHeader(“内容处置”、“附件;文件名=${pdfFileName}”)
response.outputStream这是因为在部署的war中,web app文件夹不存在。要正确获取dev和prod中的资源,请使用bean
例如:
class MyController {
def grailsResourceLocator
def pdfDownlod ={
def pdfFileName = params.pdfFileName
final Resource pdfFile = grailsResourceLocator.findResourceForURI('web-app/sales/resources/pdf/'+pdfFileName)
response.setContentType("application/pdf")
response.setHeader("Content-disposition", "attachment; filename=${pdfFileName}")
response.outputStream << pdfFile?.file.bytes // << already flushes!
return
}
}
类MyController{
def grailsResourceLocator
def pdfDownlod={
def pdfFileName=params.pdfFileName
final Resource pdfFile=grailsrourcelocator.findResourceForURI('web-app/sales/resources/pdf/'+pdfFileName)
response.setContentType(“application/pdf”)
setHeader(“内容处置”、“附件;文件名=${pdfFileName}”)
response.outputStream您可以尝试这种语法,它对您来说很好
def pdfFile = new File(ServletContextHolder.servletContext.getRealPath('sales/resources/pdf/'+pdfFileName))
享受。谢谢你的回答,朋友。你能告诉我为什么我的代码不起作用吗?当我们创建war文件时,web应用程序的所有文件夹都直接放在你的foo文件夹中,其中war文件的名称是foo.war。我的解决方案对你有效吗?谢谢你的快速回复。如果在war中,wep应用程序不存在,那么它从哪里获得所有图像、css和js?