我必须实现一项功能 - 在用户下载文件完成后删除服务器上的文件。我们不希望再将该文件存储在服务器上。
我使用struts2在tomcat服务器上下载文件。如何识别文件下载是否完整。截至目前,我可以成功下载文件但是应该删除文件吗?
动作类中的代码:
contentType=new MimetypesFileTypeMap().getContentType(fileName);
File f=new File("/home/vikasbarsaiyan/downloadables/"+fileName);
inputStream = new FileInputStream(f);
<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>
答案 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()事件尝试在客户端提交。 在服务器上脚本接收提交的文件名,查找并删除它。