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

          公告


          導航

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

          統計

          常用鏈接

          留言簿(13)

          我參與的團隊

          隨筆分類(69)

          隨筆檔案(68)

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 昌邑市| 长白| 永胜县| 黄骅市| 策勒县| 邳州市| 溆浦县| 绥德县| 高雄县| 满城县| 塘沽区| 句容市| 松阳县| 闽清县| 进贤县| 正安县| 东安县| 兴文县| 长汀县| 邢台市| 雷山县| 鸡西市| 积石山| 渝北区| 霍林郭勒市| 宣城市| 墨玉县| 石狮市| 原阳县| 韩城市| 阿克| 启东市| 临朐县| 嘉禾县| 庆阳市| 普洱| 客服| 凤山市| 比如县| 四会市| 衡山县|