一个表单里有很多项内容,其中有一项需要上传文件。
文件上传需要在form的属性中加上ENCTYPE="multipart/form-data"
那样的话request就取不到值了,这个问题该怎么解决?

解决方案 »

  1.   

    没有合适的组件吗?不行就只能自己解析servletinputstream流了
      

  2.   

    我用
        <td>
    <textarea name="information" style="display:none" rows="1" cols="4"></textarea>
        <iframe name="information" src="Upload.html" frameborder=1 scrolling=no width="300" height="75"></iframe>
    </td>
    嵌在里面,不知道这个值怎么读到数据库里面去。
      

  3.   

    没有问题的,可以
    给你个例子,用jspSmartUpload
    <%
    // 新建一个SmartUpload对象
    SmartUpload su = new SmartUpload();
    // 上传初始化
    su.initialize(pageContext);
    // 设定上传限制
    // 1.限制每个上传文件的最大长度。
     su.setMaxFileSize(10000);
    // 2.限制总上传数据的长度。
    su.setTotalMaxFileSize(20000);
    // 3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件
    。 su.setAllowedFilesList("doc,txt");
    // 4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat, jsp,htm,html扩展名的文件和没有扩展名的文件。
    su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
    // 上传文件
    su.upload();
    // 将上传文件全部保存到指定目录
    int count = su.save("/upload");
    out.println(count+"个文件上传成功!<br>");
    // 利用Request对象获取参数之值
    out.println("TEST="+su.getRequest().getParameter("TEST")+"<BR><BR>");
    // 逐一提取上传文件信息,同时可保存文件。
    for (int i=0;i<su.getFiles().getCount();i++) {
    com.jspsmart.upload.File file = su.getFiles().getFile(i);
    // 若文件不存在则继续
    if (file.isMissing()) continue;
    // 显示当前文件信息
    out.println("<TABLE BORDER=1>");
    out.println("<TR><TD>表单项名(FieldName)</TD><TD>"+ file.getFieldName() + "</TD></TR>"); out.println("<TR><TD>文件长度(Size)</TD><TD>" + file.getSize() + "</TD></TR>"); out.println("<TR><TD>文件名(FileName)</TD><TD>" + file.getFileName() + "</TD></TR>");
    out.println("<TR><TD>文件扩展名(FileExt)</TD><TD>"  + file.getFileExt() + "</TD></TR>"); out.println("<TR><TD>文件全名(FilePathName)</TD><TD>"+ file.getFilePathName() + "</T</TR>"); out.println("</TABLE><BR>");
    // 将文件另存
    file.saveAs("/upload/" + myFile.getFileName());
    // 另存到以WEB应用程序的根目录为文件根目录的目录下
    file.saveAs("/upload/" + myFile.getFileName(), 
    su.SAVE_VIRTUAL);
    // 另存到操作系统的根目录为文件根目录的目录下
     file.saveAs("c:\\temp\\" + myFile.getFileName(),  su.SAVE_PHYSICAL);
    }
    %>
      

  4.   

    1 自己利用getInputStream写函数
    2 使用struts框架,它会自动处理