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

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

          1. 上傳夠保存到數據庫的方式
              默認情況下,grails的 byte[] 在mysql中使用的是tinyblob,所以當上傳大文件的時候就出現錯誤。
          最簡單的辦法:
             直接手動把數據庫該字段的類型從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. 上傳后保存到文件的方式

             服務器端:  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 想飛就飛 閱讀(1753) 評論(0)  編輯  收藏 所屬分類: 讀書筆記J2EEGroovy/Grails

          公告


          導航

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

          統計

          常用鏈接

          留言簿(13)

          我參與的團隊

          隨筆分類(69)

          隨筆檔案(68)

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 汉阴县| 香港 | 贵阳市| 陆河县| 全南县| 龙江县| 龙里县| 池州市| 株洲县| 合作市| 桐城市| 丹棱县| 石景山区| 菏泽市| 肃南| 台湾省| 稷山县| 淳安县| 兴化市| 城步| 佛学| 衡阳县| 迁安市| 白朗县| 云安县| 光泽县| 沧州市| 中方县| 苏州市| 兴义市| 抚顺县| 江达县| 临沭县| 肇东市| 河南省| 徐水县| 法库县| 高邮市| 泾阳县| 日土县| 千阳县|