下载文件时删除文件

时间:2011-08-23 10:08:16

标签: java struts2

我必须实现一项功能 - 在用户下载文件完成后删除服务器上的文件。我们不希望再将该文件存储在服务器上。

我使用struts2在tomcat服务器上下载文件。如何识别文件下载是否完整。截至目前,我可以成功下载文件但是应该删除文件吗?

动作类中的

代码:

contentType=new MimetypesFileTypeMap().getContentType(fileName);
File f=new File("/home/vikasbarsaiyan/downloadables/"+fileName);
    inputStream = new  FileInputStream(f);

struts.xml中

<action name="downloadFile" class="mypack.action.FileTransferAction"
            method="downloadFile">
            <result name="success" type="stream">
             <param name="contentType">${contentType}</param>
                <param name="inputName">inputStream</param>
                <param name="contentDisposition">filename="${fileName}"</param>
                <param name="bufferSize">4096</param>
            </result>
</action>

2 个答案:

答案 0 :(得分:3)

我尝试了别的东西。我创建了一个类并扩展了java.io.FileInputStream。这样:

public class NewFileInputStream extends java.io.FileInputStream {

File file = null;

public NewFileInputStream(File file) throws FileNotFoundException {
    super(file);
    this.file = file;
}

@Override
public void close() throws IOException{
    super.close();
    file.delete();
}

并在动作类中使用。例如:

inputStream = new NewFileInputStream(file);

这是问题解决方案。

我测试了这个并取得了成功。

答案 1 :(得分:1)

使用java script.in OnDownloadComplete()事件尝试在客户端提交。 在服务器上脚本接收提交的文件名,查找并删除它。