关键的一些地方我这里贴出来给大家看
页面部分:
Logo:<img src="<%=service.getLweb_webinfo(id).getLogo()%>" name=logo />
<form action="Servlet/Upload.do?url=Lweb_webinfoEdit.jsp&fujian_num=2"
method="post" enctype="multipart/form-data" id="form1"
name="form1" target="hidden_frame">
<div class="pageContent">
<div class="pageFormContent" layoutH="97">
<dl>
<dt>
图片
</dt>
<dd>
<input type="file" name="filedata" class="required" size="30" />
</dd>
</dl>
</div>
<div class="formBar">
<ul>
<li>
<div class="buttonActive">
<div class="buttonContent">
<button type="submit">
上传
</button>
</div>
</div
</li>
<li>
<div class="button">
<div class="buttonContent">
<button class="close" type="button">
关闭
</button>
</div>
</div>
</li>
</ul>
</div>
</div>
<iframe name='hidden_frame' id="hidden_frame"
style='display: none'></iframe>
</form>
<span id="msg"></span>

解决方案 »

  1.   

    吐槽下排版。。这里把uploadservlet也贴上来
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    //获取请求的页面名字
        String backUrl = request.getParameter("url");
       // System.out.println(backUrl+"test1");
    final long MAX_SIZE = 3 *  1024 * 1024;// 设置上传文件最大为 3M
    //final long MAX_SIZE = 1 * 1024 * 1024;// 设置上传文件最大为 1M
    // 允许上传的文件格式的列表
    final String[] allowedExt = new String[] { "jpg","gif","jpeg" };
    //final String[] allowedExt = new String[] { "jpg", "jpeg", "gif", "txt","doc", "docx", "mp3", "wma", "m4a" };
    response.setContentType("text/html");
    // 设置字符编码为UTF-8, 这样支持汉字显示
    response.setCharacterEncoding("UTF-8");
    request.setCharacterEncoding("UTF-8");
    // 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload
    DiskFileItemFactory dfif = new DiskFileItemFactory();
    dfif.setSizeThreshold(4096);// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘
    dfif.setRepository(new File(request.getRealPath("/")//request.getRealPath("/")取得当前站点的根目录.
    + "example/images/ImagesUploadTemp"));// 设置存放临时文件的目录,web根目录下的ImagesUploadTemp目录
    // 用以上工厂实例化上传组件,创建一个文件上传处理器
    ServletFileUpload sfu = new ServletFileUpload(dfif);
    // 设置最大上传尺寸
    sfu.setSizeMax(MAX_SIZE); PrintWriter out = response.getWriter();
    // 从request得到 所有 上传域的列表
    List fileList = null;
    try {
    fileList = sfu.parseRequest(request);
    } catch (FileUploadException e) {// 处理文件尺寸过大异常
    if (e instanceof SizeLimitExceededException) {
    out.println("<script>parent.callback('1')</script>"); 

    return;
    }
    e.printStackTrace();
    }
    // 没有文件上传
    if (fileList == null || fileList.size() == 0) {
    out.println("<script>parent.callback('2')</script>");  return;
    }
    // 得到所有上传的文件
    Iterator fileItr = fileList.iterator();
    //定义用户ID
    String userid="";
    //循环处理所有文件
    while (fileItr.hasNext()) {
    FileItem fileItem = null;
    String path = null;
    long size = 0;
    // 得到当前文件
    fileItem = (FileItem) fileItr.next();
    if(fileItem == null || fileItem.isFormField()){
                            // 如果item是正常的表单域
                            String name = fileItem.getFieldName();
                            String value = fileItem.getString();
                            System.out.print("表单域名为:"+name+"表单域值为:"+value);
                            if(name.equals("userid")&&value!=null&&!value.equals("")){
                                userid=value;
                            }
                        }
                        else{
                            // 如果item是文件上传表单域
                            
    //                   得到文件的完整路径
    path = fileItem.getName();

    // 得到文件的大小
    size = fileItem.getSize();
    if ("".equals(path) || size == 0) {
    out.println("<script>parent.callback('3')</script>");  return;
    } // 得到去除路径的文件名
    String t_name = path.substring(path.lastIndexOf("\\") + 1);
    // 得到文件的扩展名(无扩展名时将得到全名)
    String t_ext = t_name.substring(t_name.lastIndexOf(".") + 1);
    // 拒绝接受规定文件格式之外的文件类型
    int allowFlag = 0;
    int allowedExtCount = allowedExt.length;
    for (; allowFlag < allowedExtCount; allowFlag++) {
    if (allowedExt[allowFlag].equals(t_ext))
    break;
    }
    if (allowFlag == allowedExtCount) {
    out.println("<script>parent.callback('4')</script>");  return;
    } long now = System.currentTimeMillis();
    // 根据系统时间生成上传后保存的文件名
    String prefix = String.valueOf(now);
    // 根据上传上来的文件名命名(userid+客户端的当前时间),如果上传文件名不为空,则保存文件

    //if(userid.equals("")){
        //out.println("文件选择错误,命名失败,请重新操作,选择上传文件.");
       // out.println("<FORM> <INPUT TYPE='BUTTON' VALUE='关闭返回' onClick='window.close()'> </FORM> ");
    //}else{
        //String prefix=userid;
        // 保存的最终文件完整路径,保存在web根目录下的ImagesUploaded目录下
    System.out.println(request.getRealPath("/"));
    String u_name = request.getRealPath("/") + "example/images/Images"
    + prefix + "." + t_ext;
    try {
        
    // 保存文件
    fileItem.write(new File(u_name));         
    out.println("<script>parent.callback1('文件上传成功. 已保存为:" + prefix + "." + t_ext
    + " &nbsp;&nbsp;文件大小: " + size + "',"+u_name+")</script>"); 

    } catch (Exception e) {
    e.printStackTrace();
    }

                        }
      

  2.   

    闲杂的状况是点击了上传一直没反应。。也没提示找不到servlet。这应该不是路径不对吧?
      

  3.   

    刚才没搞清楚情况。现在的问题是内容已经传到服务器那边了。但是不知道是回调函数出问题还是咋的。。在页面那里显示不出来。。麻烦各位帮我看看servlet的回调跟页面的回调函数是不是有什么问题~?
      

  4.   

    fileItem.write(new File(u_name));   
    out.println("<script>alert(123)</script>");
    先试试 能alert 123吗?