开发文件上传功能老出错! 请问是什么原因??

mmrns 2008-04-03
我的代码如下:
gsp页面上:
<g:form action="/spps/upload/upload" enctype="multipart/form-data">
<input type="file" name="myFile" />
<input type="submit" value="Upload! " />
</g:form>

controller上:
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartFile;

class UploadController {
  def index = {
  }

    def upload = {
// get our multipart
     MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
     CommonsMultipartFile file = (CommonsMultipartFile) multipartRequest.getFile("myFile");

         file.transferTo( new java.io.File( "/local/server/path/${file.name}" ) )
   

    }

}

显示HTTP ERROR: 404
请问是什么原因??
justjavac 2008-04-05
404表示文件或路径没有找到,你确定所有的路径正确无误,或者增加print语句进行跟踪,最好是用log.

是不是你的服务器没有这个路径呀"/local/server/path/",java是不会自己建立文件夹的, 你要再服务器上自己建好.
biaoming 2009-01-16
楼主,我也遇到这个问题。开发期间上传好好的,一打包上传服务器,就提示404,你解决了吗?
laobu 2009-01-16
<g:form action="updateAtta" method="post" enctype="multipart/form-data" target="hidden_frame">
                  <table>
                     <tr>
                        <td>
                           <b>插入附件:</b><font color="red">支持JPG/GIF/MP3/SWF/WMA/3GP等文件</font><br/>
                           附件标题:<input type="text" size="35" maxlength="100" id="atitle" name="atitle" value=""/>
                        </td>
                        <td>
                           可以是远程文件,如: http://www.englishto.com/bownt.jpg<br/>
                           文件地址:<input type="text" size="28" maxlength="100" id="remotetext" name="remotetext" value=""/><input type="file" size="0" id="fileAtta" name="fileAtta" style="width:0px;" onpropertychange="checkFile()">
                        </td>
                     </tr>
                     <tr><td align="right">&nbsp;<td align="left"><input type="submit" value="添加附件"></td></tr>
                  </table>
                  <iframe name='hidden_frame' id="hidden_frame" width="0" height="0"></iframe><br/>
               </g:form>


--------- Controller -----------

def updateAtta = {
      .....
}



这个是我做的! 正常. action 只填 action 名就可以了.不过全路径.
biaoming 2009-01-17
我试过你的了,也不行,还是出现404。但我大概知道哪问题。
我用jsecurity-0.3插件,取消这插件就没问题,用上这插件问题就来了。后来还试用试把form的enctype="multipart/form-data" 删除,还用jsecurity,此时也能提交到action,只是文件传不到后台。我发现是jsecurity的问题。
初步判断,grails文件上传时用了MultipartHttpServletRequest,但jsecurity有自己的JSecurityHttpServletRequest,不知道是不是这作怪,但很郁闷,用grails run-app测试一点问题也没有,只有打包放到tomcat时才这样。现在在这步卡着我整个项目的进展,希望大家出手相助。
biaoming 2009-01-17
郁闷,找到原因。action参数问题。

action="/test/sava?domain=biaoming"就报如下错误:

groovy.lang.MissingMethodException: No signature of method: org.jsecurity.web.servlet.JSecurityHttpServletRequest.getFile() is applicable for argument types: (java.lang.String) values: {"myFile"},如果把?后删除就好好的

但如果用urlmapping就报404错误。
biaoming 2009-01-19
最终的解决,把参数都放到隐藏域
Global site tag (gtag.js) - Google Analytics