我的后台java代码:
<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%>
<%@ page import="org.apache.commons.fileupload.*" %>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.regex.*"%>
<%
request.setCharacterEncoding("UTF-8");
boolean canUpload = true;
String msg = "";
String fileName = "";
String fileNameS = "";
String[] fileType = {"image/jpeg","image/gif","image/jpg","image/pjpeg"};
String fileExt = "";
long fileSize=0L;
String filePath=request.getRealPath("/") + "businessUnion/image/";
File file = new File(filePath);
if(!file.exists()){
file.mkdirs();
}
boolean isUploaded = false;
try {
       DiskFileUpload fu = new DiskFileUpload();
       // 设置最大文件尺寸,这里是4MB
       fu.setSizeMax(4194304);
       // 设置缓冲区大小,这里是100kb
       fu.setSizeThreshold(100000);
       // 得到所有的文件:
       List fileItems = fu.parseRequest(request);
       FileItem fi = (FileItem)fileItems.get(0);
       // 获得文件名,这个文件名包括路径:
       fileName = fi.getName();
       fileExt = fi.getContentType();
       for(int i=0;i<fileType.length;i++){
        if(fileExt.equalsIgnoreCase(fileType[i])){
          canUpload = true;
      break;
        }else{   
msg = "<script language='javascript'>alert('您上传的文件类型不正确.只允许上传.jpg、.jpeg、.gif类型文件')</script>";
canUpload = false;
        }
       }
       if(canUpload){
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSSS");
           Date d = new Date();
           String myDate = format.format(d);
           String ext = fileName.substring(fileName.indexOf("."));
           String saveFile = myDate + ext;
           fileSize = fi.getSize();
           fi.write(new File(filePath+saveFile));      
           out.print("businessUnion/image/"+ saveFile +"");
        out.flush();
       }else{
     out.print(msg);
     out.flush();
       }
   }
   catch(Exception e) {
       System.out.println(e.getMessage());
       out.print("文件应小于4M,请重新上传");       
   }
%>
前台上传代码:
onUploadImg:function(){
var id = this.id;
var self = YAHOO.business.List;
var handleSuccess = function(c){
var img = self.dom.get("img" + id);
img.src = c.responseText();
img.stye.display = "block";
var hi = document.createElement("input");
hi.type = "hidden";
hi.value = c.responseText();
self.dom.get(hid).appendChild(hi);
};
var handleFailure = function(){
alert(c.responseText);
};
var callback = {
success:handleSuccess,
failure:handleFailure
};
YAHOO.util.Connect.setForm(document.getElementById("form1"),true,true);
var c = YAHOO.util.Connect.asyncRequest("post","businessUnion/upLoading.jsp",callback);
},
我用的是YAHOO的YUI,以前一直用得很好,没有出现过问题。可是最近用它来上传图片的时候,却发现当我图片上传成功后,我想要将图片的存放地址返回到页面的时候,handleSuccess函数并没有执行。我拿以前写过的代码跟它进行比较,并没有发现我哪里写错。我唯一能想到可能出错的地方就是上传后可能不能返回吧,我又将后台代码全部删除,只剩下:
           out.print("businessUnion/image/"+ saveFile +"");
        out.flush();这两句代码。
可是页面的handleSuccess函数还是不能执行。请问这是怎么回事呢?

解决方案 »

  1.   

    改成
    System.out.print("businessUnion/image/"+ saveFile +""); 你确认执行了吗?
      

  2.   

    真的?还是你自己认为是这样?1 我怀疑你的程序出现了内部异常,那句话根本没有执行到
    2 你的JS没有抛出任何异常吗?
    3 调试你的JS
     var handleSuccess = function(c){     
       alert("1111111"); // 看看这一句是否能运行到       
       var img = self.dom.get("img" + id);
    4 最后一招
      新建一个空白的项目,只有js和你的那个上传页面的2-3行代码,把它调试通! 必要时去CVS/CVN里面拿老程序。
    然后仔细比对吧!