我有一个ASP.NET web api应用程序使用JavaScript来打开服务器上的PDF文件的链接。打开后,我从服务器上删除文件。使用Firefox,Safari和IE浏览器即使在文件被删除后,我也能够在浏览器上看到文件。当我在Chrome中运行该功能时,我看不到任何文件并显示404错误。我怎样才能让这个功能在Chrome中运行呢?铬 - 如何显示从服务器的PDF文件,并在浏览器显示文件后从服务器删除
put方法在C#中删除PDF
public void Put([FromBody]string filepath)
{
string pdfGUID_DIR = filepath.Split('/')[0]; //get the first part of the dir which is the folder name (GUID value)
string tempDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, System.Configuration.ConfigurationManager.AppSettings["TemporaryDirectoryParent"], pdfGUID_DIR + @"\");
try
{
Directory.Delete(tempDir, true);
}
catch (IOException)
{
Directory.Delete(tempDir, true);
}
catch (UnauthorizedAccessException)
{
Directory.Delete(tempDir, true);
}
}
JS代码来打开PDF
window.open('/Report/' + pdfURL); //Link to PDF file on server
setTimeout(removePDF(pdfURL), 1000);
JS功能的AJAX调用删除PDF
function removePDF(pdfURL) {
$.ajax({
url: '/api/pdf',
type: 'PUT',
data: "=" + pdfURL,
});
}
为什么从客户端发送删除方法?您可以将文件“提供”给客户端,然后对文件进行处理(重命名或删除) - 服务器端即 – Leon 2014-09-18 18:49:43
Hi Leon,感谢您的回复。看来我的超时延迟设置得太低了。我现在看到该文件,并在超时后它会在超时触发时删除。但是,针对您的评论,如何在我提供该文件后删除该文件?我不想将文件保存在服务器上。我正在使用pdf生成器(wkhtmltopdf)将文件保存在服务器上,然后将文件提供给客户端。 – Vahe 2014-09-18 18:53:37
不要只依赖计时器。互联网连接速度慢的人都会遇到问题。 (这不只是铬)..我不知道*你怎么实际上服务的文件,但我在这里创建一个实际的响应...使用MVC – Leon 2014-09-18 18:56:38