2014-09-18 44 views
0

我有一個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, 
     }); 

    } 
+0

爲什麼從客戶端發送刪除方法?您可以將文件「提供」給客戶端,然後對文件進行處理(重命名或刪除) - 服務器端即 – Leon 2014-09-18 18:49:43

+0

Hi Leon,感謝您的回覆。看來我的超時延遲設置得太低了。我現在看到該文件,並在超時後它會在超時觸發時刪除。但是,針對您的評論,如何在我提供該文件後刪除該文件?我不想將文件保存在服務器上。我正在使用pdf生成器(wkhtmltopdf)將文件保存在服務器上,然後將文件提供給客戶端。 – Vahe 2014-09-18 18:53:37

+0

不要只依賴計時器。互聯網連接速度慢的人都會遇到問題。 (這不只是鉻)..我不知道*你怎麼實際上服務的文件,但我在這裏創建一個實際的響應...使用MVC – Leon 2014-09-18 18:56:38

回答

0

如果你不使用MVC(即使你是,但你需要改變的ActionResult)。 發佈該文件作爲迴應,您發佈它,只需轉儲它。

Response.ContentType = "application/pdf" 
Response.AddHeader("content-disposition", "attachment; filename=" + HttpUtility.UrlEncode(filename)); 
Response.WriteFile(fullpath); 
Response.End(); 

    // dump file here: like 
System.IO.File.Delete(fullpath); 
+0

>試試這個答案:http:// stackoverflow。 com/questions/3604562 /下載文件的任何類型在asp-net-mvc-using-fileresult – Leon 2014-09-18 19:06:15

+0

謝謝萊昂。在Controller中的Post方法中,我當前運行一個名爲Wkhtmltopdf.exe的可執行文件。它在服務器文件夾上創建pdf。然後我從Controller返回PDF文件位置,並讓我的JS函數在可從瀏覽器訪問的目錄上打開創建的文件。我會嘗試你提供的方法。 – Vahe 2014-09-18 19:06:42

相關問題