ENCTYPE="multipart/form-data">
这个设置好像不是这样的 
是enctype="application/x-www-form-urlencoded"
而且   如果你设置了这个,这个form的其他数据在后台就获取不到了。我介意你把上传于数据提交分开

解决方案 »

  1.   

    struts2上传  
     
     upload.jsp 
      <form action="./uploadAction!upload" method="post" enctype="multipart/form-data">      <input type="file" name="upload"/><br/>      <input type="submit" value="上传"/>  </form>     struts.xml   <action name="uploadAction" class="com.xiaobei.ssh.www.upload.UploadAction">       <param name="saveDir">D:/Apache/Tomcat6.0/webapps/struts2/upload/uploadfile/</param>       <result name="uploadUI">/upload/uploadUI.jsp</result>       <result name = "fileList">/upload/fileList.jsp</result>  </action>UploadAction.java
                    package com.xiaobei.ssh.www.upload;import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;import com.opensymphony.xwork2.ActionSupport;public class UploadAction extends ActionSupport{
    private String contentType;
    private File upload;
    private String fileName;
    private String caption;
    private String saveDir;public File getUpload() {
    return upload;
    }public void setUpload(File upload) {
    this.upload = upload;
    }public String getSaveDir() {
    return saveDir;
    }public void setSaveDir(String saveDir) {
    this.saveDir = saveDir;
    }public String getContentType() {
    return contentType;
    }public void setContentType(String contentType) {
    this.contentType = contentType;
    }public String getUploadFileName() {
    return fileName;
    }public void setUploadFileName(String fileName) {
    this.fileName = fileName;
    }public String getCaption() {
    return caption;
    }public void setCaption(String caption) {
    this.caption = caption;
    }public String uploadUI() throws Exception{
    return "uploadUI";
    } public String upload() throws Exception {
    FileInputStream fis = new FileInputStream(this.upload);
    FileOutputStream fos = new FileOutputStream(this.saveDir+this.fileName);
    BufferedInputStream bis = new BufferedInputStream(fis);
    BufferedOutputStream bos = new BufferedOutputStream(fos);
    int i=0;
    while((i=bis.read())!=-1){
    bos.write(i);
    }
    bos.flush();
    fos.flush();
    bos.close();
    fos.close();
    bis.close();
    fis.close();
    return "fileList";
    } }
     
     
      

  2.   

    那种形式还是不行,我是用的apache fileupload组件上传的!!
      

  3.   

    利用FileUpload组件实现文件上传
    1.1新建一个文件上传表单
    新建一个form,method设置成post,enctype设置成multipart/form-data,如下图所示。
     
    图18 文件上传的表单
    1.2编写Servlet
    编写一个Servlet,完成文件上传功能,主要遵循一下几个步骤。
    // 1、Create a factory for disk-based file items
    FileItemFactory factory = new DiskFileItemFactory();// 2、Create a new file upload handler
    ServletFileUpload upload = new ServletFileUpload(factory);// 3、Parse the request
    List /* FileItem */ items = upload.parseRequest(request);// 4、Process the uploaded items
    Iterator iter = items.iterator();
    while (iter.hasNext()) {
        FileItem item = (FileItem) iter.next();    if (item.isFormField()) {
            processFormField(item);
        } else {
            processUploadedFile(item);
        }
    }// 5、Process a regular form field
    if (item.isFormField()) {
        String name = item.getFieldName();
        String value = item.getString();
        ...
    }// 6、Process a file upload
    if (!item.isFormField()) {
        String fieldName = item.getFieldName();
        String fileName = item.getName();
        String contentType = item.getContentType();
        boolean isInMemory = item.isInMemory();
        long sizeInBytes = item.getSize();
        ...
    }
    表单中的表单域和文件上传都是以FileItem的形式提交过来的,所以需要判断是普通的表单域还是文件上传,然后分别处理。FileItem提供了isFormField方法来实现这个功能。在文件上传的分支里调用FileItem的write方法即可简便的实现文件上传功能。
    Write是一个较高级的封装,如果我们想要完成更精细的控制,需要获得OutputStream对象和InputStream对象,然后进行IO操作,完成文件上传。但是利用这个方法会产生临时文件,其实这些临时文件是FileItem 产生的。我们只需在处理完FileItem后调用FileItem的delete方法将其删除。也可以通过FileCleanerCleanup监听器来清理临时文件,详见http://commons.apache.org/fileupload/using.html
      

  4.   

    利用FileUpload组件实现文件上传麻烦了点,建议使用struts2
      

  5.   

    我是在这里List /* FileItem */ items = upload.parseRequest(request); 我获得的list是null,为什么呢?