commons-fileupload 可以不可以在上传文件之前取得form中参数的值?
<form enctype="multipart/form-data" ...> 这个设置, 好像不可以. 
原来用smartupload可以, 但是不能传大文件所以改用这个. 
问题就来了. 我想在客户端指定上传的目录, 比如/data/0222 或 /data/abc, 
所以要在上传之前检查下用户对目录的权限(不是操作系统权限).
所以要在上传之前得到form中的一些信息还有个问题请教, 如果是传个几百MB的大文件, 我看是先传到临时目录, 再移动到其他目录, 这个很耗资源, 也很花时间啊 :( 有什么办法吗? 或是我的需求达不到.

解决方案 »

  1.   

    我就不知道smartupload可以得到参数
      

  2.   

    我把这贴在web->jsp发了一次, 斑竹把这个贴删除吧.
      

  3.   

    smartload可以设置参数啊,设置上传文件的大小
      

  4.   

    smartload是可以, 就是不能传大文件, 原来就是用这个的.
    现在改用FileUplaod了.servlet是不能得到. 不只要在javascript中有没有好的解决方法.
      

  5.   

    比如:
    <body>
    <div id="contentDiv">
      <form action="FileUpload" method="post" enctype="multipart/form-data" name="fileUploadForm" target="target_upload" id="fileUploadForm" onsubmit="return startStatusCheck();">
        <input id="datafileOfFileUploadForm" type="file" size="60" name="datafileOfFileUploadForm" /><br />
        <input id="pathOfFileUploadForm" value="/aa" name="pathOfFileUploadForm" /><br />
        <input name="submit" type="submit" id="submitOfFileUploadForm" value="Submit" />
      </form>
    </body>FileUpload就是上传的servlet.现在我就是想在上传文件之前
    List items = upload.parseRequest(request);就得到/aa这个值. 然后判断是否允许上传.唉...
      

  6.   

    想了一下,觉得这么可以..如果有其他方法,这里学习了. 
    弄一个中间页,就是你提交的时候先到这个页面,然后判断,如果符合你的条件,用javascript代码(javascript:history.back(),这个相当于后退,页面不会刷新)返回上传附件的页面上传.如果在中间页判断出不符合条件就直接在中间页报错,这样就可以避免楼主所说的现象. 
    我这么说不知道楼主名不明白,个人感觉可以.
      

  7.   

    这个东西在smartupload中是可以取得参数的,在fileupload不行。但是把参数写在url(url?a=5 可以取到)也就是使用http的GET方法是可以上传的。可以在上载前,先从request中取出来,试试看。
      

  8.   

    使用过滤器(filter)完全可以实现,其方法是:定义一个过滤器类,这个类需要实现javax.servlet.Filter接口,Filter接口中需要实现3个方法:
    public class TestFilter implements Filter {    public void init(FilterConfig filterConfig) throws ServletException {    }
        public void destroy() {
        }
        public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws 
            IOException, ServletException {
        }
    }
    这3个方法分别在web容器(象tomcat)启动时、满足条件时和运用停止时被web容器调用,需要使用过滤器,需要在web.xml文件中进行配置:
    <filter>
    <filter-name>TestFilter</filter-name>
    <filter-class>包.TestFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>TestFilter</filter-name>
    <url-pattern>/web路径/FileUpload</url-pattern>
    </filter-mapping>
    经过配置后,当客户端访问>/web路径/FileUpload这个servlet时,将执行TestFilter这个过滤器的doFilter方法,这个方法有3个参数,这3个参数是由web容器注入的,前两个不用说,用他们就可以完成搂主的判断及不满足条件时的重定向,第3个在过滤通过时用来调用下个过滤器(可配置多个),也就是在doFilter的末尾写上这么一句:chain.doFilter(request, response);
      

  9.   

    filter起作用了. 但是在doFilter(...)中的request中还是没有得到任何参数. 奇怪...
      

  10.   

    这和<form enctype="multipart/form-data"...>是不是有关系?
      

  11.   


    确实和这个<form enctype="multipart/form-data" ...> 有关,13楼的方法可行