目前做java web项目时遇到一问题:
服务器里的一些文件,如何在下载到客户端之后自动删除。
也就是客户端下载完毕后,服务器端能否得到响应,进而进行消除处理?

解决方案 »

  1.   

    你可以自己写servlet,负责文件的下载。当文件已经传完了以后,就把服务器上的文件给删除。
      

  2.   

    我的思路是这样的
    -----------------------------------------------------------up.jsp
    <%
    下载文件
    //跳转到处理临时文件的页面
    response.sendRedirect("/delete.jsp?xx=下载成功");
    %>
    -----------------------------------------------------------delete.jsp
    在body 的onload事件中加入 下载成功或失败的脚本 load()
    function load(){
    <%
    String xx = request.getParameter("xx");
    if(xx.equals("下载成功")){
      进行消除处理。
      response.sendRedirect("/secc.jsp");
       }else{
        ....
       alert("文件下载失败,重新下载文件!");
      response.sendRedirect("/up.jsp");
       }%>
    }
    <body onload="load();">
    ....
    </body>
      

  3.   

    如需通知服务端,那么在
    if(xx.equals("下载成功")){
    提交页面,通知成功,反馈删除指令。
    }
      

  4.   

    可以考虑采用ajax,在下载结束后触发一个异步动作----------------------------
    http://www.5ai7.net/
      

  5.   

    //进行消除处理。
      File dele_filename = new File(path);//path是所要删除文件的绝对路径
      dele_filename.delete();//删除文件这段代码是删除文件的,你可以在secc.jsp这么页面中加入这段
      

  6.   

    我做的思路是:(使用jspsmart组件来进行文件上传和下载)
    1.首先做一个页面,表单中有让用户进行下载的按钮,然后表单提交到下载及删除文件的处理页面;
    2.使用该组件的downloadFile()方法即可进行下载而且能知道结果
      

  7.   

    这里是文件上传的代码
    需要 smartupload2.0.1.jar将之放入lib目录
    <jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload" /><%   String info = null;
       String fileName = null;//文件名
       long fileSize = 0l;
       String fileType = null;//类型
       String fileDate = null;//日期
       String destFile = null;
       int iStep = 1;
       String strEvent = null;   
        try{
      
             mySmartUpload.initialize(pageContext);
           mySmartUpload.setCharSet("utf-8");
          
       String type = UploadConfig.getType();
       if(type != null)
                   mySmartUpload.setAllowedFilesList(type);
       long maxSize = UploadConfig.getSize();
       if(maxSize !=-1)
           mySmartUpload.setTotalMaxFileSize(maxSize);    
            // Upload
           mySmartUpload.upload();
       // Retreive the current file
       com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(0);
               strEvent = mySmartUpload.getRequest().getParameter("event");
          
             
       String[] paths = null;
       if (!myFile.isMissing()) {
          paths = FileMgr.getAFileName(myFile.getFileExt());
          destFile = paths[1];
      String pPath= paths[0];
      myFile.saveAs(pPath);
      fileSize = myFile.getSize();
      fileSize = fileSize/1025 + 1;
                  fileName = myFile.getFileName();
      fileType = myFile.getFileExt();
      fileDate = DateUtil.getTimeStamp();
       }else{
          iStep = -1;
      info = "上传文件丢失,请重试!";
           }
     }catch(Exception e){
        iStep = -1;
                info = "上传时发生错误,原因 " + e.getMessage();
         }
    %>
    使用以上代码可以得到文件是否上传成功
      

  8.   

    如果是用流实现下载,在完成之后加上file.delete()
      

  9.   

    做一个SERVLET
    下载完以后,给这个SERVLET一个信号
    这个SERVLET负责处理删除动作就可以了