有几个错别字
up.jsp的代码应该这么写?现在上面那个FORM 里的“ENCTYPE="multipart/form-data"”是不是就是以流的形式输出了,我现在要得到一个一个String类型的arthor和一个FileInputStream类型的fis该怎么写?多谢指点。

解决方案 »

  1.   

    ENCTYPE="multipart/form-data"
    不是输出,是你上传文件时候FORM必须设置的传递属性,提交到后台,你在sevlet里还是要写对应的接收保存代码的。
    action 是你调用后台servlet的uri
    比如action ='upload.do'
    给你个代码自已研究吧
    这段代码是sturts架构开发的action
    import java.io.*;
    import javax.servlet.http.*;
    import org.apache.struts.action.*;
    import org.apache.struts.upload.FormFile;
    import com.nftelecom.csss.test.af.UpLoadForm;
    import java.io.FileOutputStream;
    import java.util.ArrayList;/**
     * <p>Title:UpLoadAction</p>
     * <p>Description: QRRSMMS </p>
     * <p>Copyright: Copyright (c) 2004 jiahansoft</p>
     * <p>Company: jiahansoft</p>
     * @author wanghw
     * @version 1.0
     */public class UpLoadAction
        extends Action {
        public ActionForward execute(ActionMapping mapping,
                                     ActionForm form,
                                     HttpServletRequest request,
                                     HttpServletResponse response) throws Exception {
            //如果form是uploadsForm
            System.out.println("upload_____________________-");
            String encoding = request.getCharacterEncoding();
            if ( (encoding != null) && (encoding.equalsIgnoreCase("utf-8"))) {
                response.setContentType("text/html; charset=gb2312"); //如果没有指定编码,编码格式为gb2312
            }
            UpLoadForm theForm = (UpLoadForm) form;
            FormFile file = theForm.getTheFile(); //取得上传的文件
            try {
                InputStream stream = file.getInputStream(); //把文件读入
                String filePath = request.getRealPath("/"); //取当前系统路径
                filePath = "c:\\";            ByteArrayOutputStream baos = new ByteArrayOutputStream();
                OutputStream bos = new FileOutputStream(filePath + "/" +
                    file.getFileName()); //建立一个上传文件的输出流
                //System.out.println(filePath+"/"+file.getFileName());
                int bytesRead = 0;
                byte[] buffer = new byte[8192];
                while ( (bytesRead = stream.read(buffer, 0, 8192)) != -1) {
                    bos.write(buffer, 0, bytesRead); //将文件写入服务器
                }
                bos.close();
                stream.close();
            }
            catch (Exception e) {
                System.err.print(e.toString());
            }
            //request.setAttribute("dat",file.getFileName());
            return mapping.findForward("display");    }