2013-01-11 83 views

回答

3

域类

class Data { 
    byte[] pdfFile 

    static mapping = { 
     pdfFile sqlType:'longblob'  //use mysql 
    } 

    static constraints = { 
     pdfFile nullable:true 
    } 
} 

GSP视图提交URL的控制器,即getFile.gsp例如:

<g:form url="[action:'savePdf',controller:'data']" > 
     <g:textField name="externalUrl" > 
     <g:submitButton name="submit" value="Submit" /> 
</g:form> 

DataController类

class DataController { 
    def savePdf() {         //save pdf file into database 
     def url = params.externalUrl   // for example:'http://moodle.njit.edu/tutorials/downloading_moodle.pdf' 

     def localFile = new FileOutputStream('test.pdf') 
     localFile << new URL(url).openStream() 
     localFile.close() 

     def pdfFile = new FileInputStream('test.pdf') 
     byte[] buf = new byte [102400] 
     byte[] pdfData = new byte[10240000]    //pdf file size limited to 10M 
     int len = pdfFile.read(buf, 0, 102400) 
     ByteArrayOutputStream bytestream = new ByteArrayOutputStream() 
     while(len > 0) { 
      bytestream.write(buf, 0, len) 
      len =pdfFile.read(buf, 0, 102400) 
     } 
     data.pdfFile = bytestream.toByteArray() 
     data.save() 
    } 

    def renderPdf() {        //for pdf file download 
     def dataInstance = Data.get(params.id) 
     response.setContentType('application/pdf') 
     byte[] pdf = dataInstance?.pdfFile 
     response.outputStream << pdf 
    } 
} 

要触发renderPdf()方法,把一个链接在另一个GSP视图,让我们说render.gsp

删除或已回答的问题
<a href="${createLink(uri:'/data/renderPdf/'+dataInstance.id)}">pdf file</a> 
+0

嗨,thanx回复,你告诉我只有pdf如何存储到数据库。我只想将pdf的内容存储到数据库中......假设数据以pdf格式表格格式 – itsvks

+0

那么,那可能是一个整体项目。在这里我不期待任何关于这样一个重大话题的答案。 – coderLMN

+0

嘿,你可以给一些想法..如何解决这个问题..我应该使用哪个库? – itsvks

相关问题