问题描述:
上传图片判断长度和高度,用JS来做的时候ie7不支持。。
所以就绕了一个圈。先把图片上传到服务器。然后在服务器上得到图片的属性
如果超过了长度和高度。再把图片删除,现在问题是,刚保存在服务器上的图片
要删除返回false好像图片正在使用。不能删除。。
请教这个问题怎么解决啊?如果有JS判断的话。如何做到兼容IE7和Firefox。。
谁有更好的解决办法。。我加分

解决方案 »

  1.   

    补充代码:File f1=new File(uploadPath+"/"+filename); 
    file.write(f1);
    String topic = uploadPath+"\\"+filename; 
    //判断长度高度
    boolean isokpic=accBll.judgeWidthHeight(topic, 140, 150);
    if(!isokpic){
    topic=topic.replace("\\", "\\\\");
    File delPhotoPath  = new File(topic);
    if(delPhotoPath.exists()){
    boolean kkkkk=delPhotoPath.delete(); 
    System.out.println(kkkkk);
    ////////这里打印false
    }
    }
      

  2.   

    程序中有没有什么地方用stream打开了这个文件,要把流关闭掉
    你在操作系统里有没有打开这个文件,有的话也关闭
      

  3.   

    回答2楼,我是小菜鸟。能帮忙看看代码嘛?我看好像么有地方是打开么关闭的。。看不出所以然。。String id="";
    //图片上传路径
    String uploadPath =getServletContext().getRealPath("comm/images/uploadHead/"); 
    // 图片临时上传路径 
    String tempPath = getServletContext().getRealPath("comm/images/uploadHead/temp/");

    String imagePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";

    // 文件夹不存在就自动创建: 
    if(!new File(uploadPath).isDirectory()) 
    new File(uploadPath).mkdirs(); 
    if(!new File(tempPath).isDirectory()) 
    new File(tempPath).mkdirs(); 
    try { 
    DiskFileUpload fu = new DiskFileUpload();
    //  设置最大文件尺寸,这里是50KB 
    fu.setSizeMax(102400); 
    //  设置缓冲区大小,这里是4kb 
    fu.setSizeThreshold(4096); 
    //  设置临时目录: 
    fu.setRepositoryPath(tempPath); //  得到所有的文件: 
    List fileItems = fu.parseRequest(request); 
    Iterator i = fileItems.iterator(); 
    //  依次处理每一个文件: 
    while(i.hasNext()) { 
    FileItem file = (FileItem)i.next(); 

    //  获得文件名,这个文件名是用户上传时用户的绝对路径: 
    String fileName = file.getName(); 
    // 看文件以什么结束 
    // System.out.println(fileName.endsWith(".gif"));  if(fileName!=null&&(fileName.endsWith(".jpg")||fileName.endsWith(".gif"))) { 
    //  在这里可以记录用户和文件信息 
    //  生成上传后的文件名 
    String filename=null; 
    Random rd = new Random(); 
    Calendar time = Calendar.getInstance(); 
    if(fileName.endsWith(".jpg")){ 
    filename=String.valueOf(time.get(Calendar.YEAR)) 
    + String.valueOf(time.get(Calendar.MONTH)) 
    + String.valueOf(time.get(Calendar.DAY_OF_MONTH)) 
    + String.valueOf(time.get(Calendar.HOUR_OF_DAY)) 
    + String.valueOf(time.get(Calendar.MINUTE)) 
    + String.valueOf(time.get(Calendar.SECOND)) 
    + String.valueOf(rd.nextInt(100)) + ".jpg"; 
    }else if(fileName.endsWith(".gif")){ 
    filename=String.valueOf(time.get(Calendar.YEAR)) 
    + String.valueOf(time.get(Calendar.MONTH)) 
    + String.valueOf(time.get(Calendar.DAY_OF_MONTH)) 
    + String.valueOf(time.get(Calendar.HOUR_OF_DAY)) 
    + String.valueOf(time.get(Calendar.MINUTE)) 
    + String.valueOf(time.get(Calendar.SECOND)) 
    + String.valueOf(rd.nextInt(100)) + ".gif"; 
    }
    File f1=new File(uploadPath+"/"+filename); 
    file.write(f1);

    String topic = uploadPath+"\\"+filename; 
    System.out.println(topic);
    boolean isokpic=accBll.judgeWidthHeight(topic, 140, 150);
    if(!isokpic){
    topic=topic.replace("\\", "\\\\");
    File delPhotoPath  = new File(topic);
    if(delPhotoPath.exists()){
      boolean kkkkk=delPhotoPath.delete(); 
      System.out.println(kkkkk);
    }
    } System.out.println(fileName+"成功上传!"); 
    }else{
    String idname=file.getFieldName();
    if(idname.equals("hiddenID")){
    id=file.getString();
    }
    }

    //  跳转到上传成功提示页面 

    catch(Exception e) { 
    //  可以跳转出错页面 

    }catch(Exception ex){
    }
      

  4.   

    先把上传时候读取的流关闭
    在delete就可以了
    我开展也是这样的
      

  5.   

    FILE.close();FILE=NULL;最后关闭后应该没问题了嘛
      

  6.   

    报告5楼File好像么有close这个东东。。
    =null也试过了。。好像麽用啊。。我是加在
    File f1=new File(uploadPath+"/"+filename); 
    file.write(f1);
    file=null;
    还有什么办法嘛???
      

  7.   

    的确没有,不过FileItem有getOutputStream()方法,试试file.getOutputStream().close()
      

  8.   

    javax.swing.ImageIcon imageIcon = new javax.swing.ImageIcon("图片绝对路径"); //上传的时候可以取到图片的绝对路径
    int width = imageIcon.getIconWidth(); //宽
    int height = imageIcon.getIconHeight(); //高用这个做就不用去上传图片再删掉了