修正Grails in Action中上傳文件的方法

          Grails in Action 中給出了上傳文件的方法,但好像有點(diǎn)問題,改過的如下所示:

          1. 上傳夠保存到數(shù)據(jù)庫的方式
              默認(rèn)情況下,grails的 byte[] 在mysql中使用的是tinyblob,所以當(dāng)上傳大文件的時(shí)候就出現(xiàn)錯(cuò)誤。
          最簡單的辦法:
             直接手動(dòng)把數(shù)據(jù)庫該字段的類型從tinyblob改成longblob,但是注意DataSouce中的dbCreate方式要改成“update”
              development {
                  dataSource {
                      dbCreate 
          = "update" // one of 'create', 'create-drop','update'
                      //url = "jdbc:hsqldb:mem:devDB"
                      driverClassName = "com.mysql.jdbc.Driver"
                      username 
          = "root"
                      password 
          = "dens"
                      url 
          = "jdbc:mysql://localhost:3306/hubbub?useUnicode=true&characterEncoding=utf8"
                  }
              }


          2. 上傳后保存到文件的方式

             服務(wù)器端:  ImageController中的action 為rawUpload, 主要是增加了獲取rootPath以及params.id,然后保存.

              def rawUpload = {
                  def mhsr 
          = request.getFile('photo')
                  def rootPath 
          = this.servletContext.getRealPath(""
                  
                  
          if(!mhsr?.empty && mhsr.size < 1024*20000) {
                       mhsr.transferTo(
                          
          new File("$rootPath/images/upload/${params.userId}/mugshot.gif") )
                  }
              }

             客戶端:  主要是增加了請求格式enctype="multipart/form-data"
           1 <html>
           2     <head>
           3         <title>Upload Image</title>
           4         <meta name="layout" content="main"/>
           5     </head>
           6     <body>
           7     
           8       <g:uploadForm action="rawUpload" enctype="multipart/form-data">
           9             User Id:
          10             <g:select name="userId" from="${com.grailsinaction.User.list()}"
          11                       optionKey="userId" optionValue="userId" />
          12             <p/>
          13             Photo: <input name="photo" type="file" />
          14             <g:submitButton name="upload" value="Upload"/>
          15         </g:uploadForm>
          16 </body>
          17 </html>

          posted on 2010-08-11 16:48 想飛就飛 閱讀(1748) 評(píng)論(0)  編輯  收藏 所屬分類: 讀書筆記J2EEGroovy/Grails

          公告


          導(dǎo)航

          <2010年8月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          統(tǒng)計(jì)

          常用鏈接

          留言簿(13)

          我參與的團(tuán)隊(duì)

          隨筆分類(69)

          隨筆檔案(68)

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 淮南市| 读书| 恭城| 金平| 万州区| 汉源县| 漳平市| 黄龙县| 长寿区| 鄂托克前旗| 嘉兴市| 化州市| 滨州市| 海阳市| 克山县| 托里县| 黄石市| 孝感市| 都江堰市| 探索| 临城县| 安阳市| 鄂尔多斯市| 喜德县| 武强县| 余江县| 临城县| 图们市| 海口市| 蓬溪县| 宽甸| 正阳县| 云梦县| 长宁区| 淅川县| 德清县| 抚宁县| 五寨县| 周至县| 陇南市| 吐鲁番市|