我有一個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