struts2进行文件的upload和download的问题

作者: 7ack | 来源:发表于2016-05-18 19:07 被阅读150次

    今天在学习使用struts2进行文件的upload和download的时候遇到了许多问题。

    总结如下:

    • 文件上传临时的tmp文件拒绝访问,错误如下:
    2016-05-18 10:36:25,072 WARN [org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest] - Unable to parse request
    
    org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. c:\upload0c89742b26a64ff1aebb19429fbf727000000002.tmp (拒绝访问。)
    
    Caused by: java.io.FileNotFoundException: c:\upload0c89742b26a64ff1aebb19429fbf727000000002.tmp (拒绝访问。)
    
    

    这个问题是由于我把上传的临时目录设在了c:\ 根目录 ,导致无法访问。

    • 解决办法:
    1. 在c盘新建一个tmp文件夹
    2. 修改struts.xml
    <!-- 上传过程中临时文件存放目录 --><constant name="struts.multipart.saveDir" value="C:\tmp\"></constant>
    
    • 文件上传后,无法保存到指定路径。错误如下:
    C:\JavaEE\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\upload\2016-05-18 11:02:12,859 ERROR [org.apache.struts2.dispatcher.Dispatcher] - Exception occurred during processing request: C:\JavaEE\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\upload\upload\FiLiLEiW9MGfa_vazxbtuobbnEth.jpg (系统找不到指定的路径。)java.io.FileNotFoundException: C:\JavaEE\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\upload\upload\FiLiLEiW9MGfa_vazxbtuobbnEth.jpg (系统找不到指定的路径。)
    
    • 解决办法:

    我用的是ServletActionContext.getServletContext().getRealPath()

    方法获取绝对路径,只要在工程目录下新建upload文件夹就可解决。

    • inputName 不匹配问题

    由于参考了许多网上的例子,导致struts.xml 和action中方法名不匹配

    错误如下:

    Apache Tomcat/7.0.65 - Error reportCan not find a java.io.InputStream with the name [inputStream] in the invocation stack. Check the tag specified for this action.
    
    • 解决方法:

    修改struts.xml中

    <param name="inputName">NAME</param>
    

    NAME要和download.action中的getDownload()方法名一致。

    相关文章

      网友评论

        本文标题:struts2进行文件的upload和download的问题

        本文链接:https://www.haomeiwen.com/subject/wmmwrttx.html