一个表单中除了要提交选择上传的图片,还要提交其它数据
   比如要获取一个人的姓名,年龄……  加上选择的上传图片
   我用的是SmartUpload组件,在表单中非得加上 ENCTYPE="multipart/form-data" 属性
   不加图片上传不了,加了,其它数据有获取不到,所以,有大虾能帮忙解决一下

解决方案 »

  1.   

    可以引用commons-fileupload包
    在Servlet中这样使用:DiskFileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload diskFileUpload = new ServletFileUpload(factory);// 定义一个HashMap,存放请求参数
    Map<String, String> parameters = new HashMap<String, String>();

    // 得到所有的文件,以及其它请求参数:
    List<?> fileItems = diskFileUpload.parseRequest(request);
    Iterator<?> i = fileItems.iterator();// 依次处理每一个文件,以及请求参数:
    while (i.hasNext()) {
        FileItem fi = (FileItem) i.next();
        // 如果是文件,进行上传操作
        if (!fi.isFormField()) {
            ......
        }else{
            // 如果是请求参数
    String name = fi.getFieldName();
    String value = fi.getString();
    ......
        }
    }
      

  2.   

    有没有用struts?是不是文本内容被struts拦了?以前遇到过
      

  3.   

    加ENCTYPE="multipart/form-data"不会影响其它表单域的提交的!~
      

  4.   

    没有啊 ,我反复测试过才说的,问题就是解决不了
    这是我写的方法
    public String doUpload(ServletConfig servletConfig,HttpServletRequest request,
    HttpServletResponse response) {
    try {
    // 创建SmartUpload对象
    SmartUpload mySmartUpload = new SmartUpload();

    // 初始化对象 pageContext:
    mySmartUpload.initialize(servletConfig, request, response);

    mySmartUpload.setMaxFileSize(500000000); // 以KB为单位
    // 允许文件的类型
    mySmartUpload
    .setAllowedFilesList("jpg,txt,gif,jar,rar,java,class,jsp,mp3");
    // 限文件的类型
    mySmartUpload.setDeniedFilesList("exe");
    // 开始上传……
    mySmartUpload.upload();


    // 获取文件对象
    File myFile = mySmartUpload.getFiles().getFile(0);

    // 如果文件存在
    if (!myFile.isMissing()) {
    // 获取文件名的后缀类型
    String extname = myFile.getFileExt();
    String fileName = new Date().getTime() + "." + extname; // 产生一个文件名
    // 将文件保存在image夹子里
    myFile.saveAs("face/" + fileName, mySmartUpload.SAVE_VIRTUAL);

    //返回存放数据库的文件名
    return fileName;
    } else {
    System.out.println("上传有误!!!!!!!");
    return null;
    } } catch (Exception ex) { ex.printStackTrace();
    return null; }
      

  5.   

    不是因为LZ用了ENCTYPE="multipart/form-data"获得不到页面元素 而是因为LZ用了SMARTUPLOADSMARTUPLOAD对获得页面元素有方法的 原来的request不好使了 smartupload有专门的方法去活动 去找找吧