2014-08-29 52 views
0

我有一個ajax POST請求被髮送到laravel控制器,這工作正常。我在控制器上做了一些工作,我得到一個字符串,其大小可以從幾百千字節到幾百兆字節。POST請求Laravel然後下載字符串作爲文件

我想下載這個字符串作爲一個文件,我一直在嘗試各種方法,但問題是每當我使用返回將字符串傳遞給不同的控制器或不同的頁面,它將輸出返回到ajax成功代替。我嘗試刪除成功,但它仍然無法正常工作。

  /*POST request*/ 
      $.ajax({ 
       type:"post", 
       url:"{{ URL::route('sshDownload') }}", 
       data: { 
        id:id 
        file:file, 
        status:"logfile" 
       }, 
       success:function(data){ 
        console.log(data); 
        console.log("SUCCESS"); 
       } 
      }); 

在我sshDownload控制器我試圖做這樣的事情:

 return Response::make($output, '200', array(
      'Content-Type' => 'text/plain', 
      'Content-Disposition' => 'attachment; filename="file.log' 
     )); 

,我甚至已經試過:

 return Redirect::route('sshDownloadName')->with($output); 

但最終,我隨時隨地使用返回它將數據發回到前端ajax。

如何直接從PHP下載字符串,而不是將它發送到ajax?

+0

什麼是您的基本控制器類型? – 2014-08-29 20:23:56

+0

你是什麼意思? – Envious 2014-08-29 20:26:03

回答

1

從你的問題來看,你並沒有100%清楚 - 但這聽起來像是一個Javascript問題,而不是Laravel問題。

當你告訴JavaScript讓AJAX請求,你告訴瀏覽器

嘿,下載這個URL在後臺,讓我知道什麼時候你就大功告成了。

AJAX響應將從不觸發瀏覽器頁面刷新或文件下載。您需要將整個瀏覽器(通過document.location,window.open或類似的東西)重定向到另一個頁面,而不是AJAX請求。

+0

是的,我認爲這不是一個laravel問題。我一直在試圖阻止Ajax的成功,但這不起作用。那麼我需要提交表單或其他東西? – Envious 2014-08-29 20:37:32

+0

@Envious忽略之前的評論,我想你需要POST。是的,標準的Javascript技術正在創建一個表單然後發佈它。 http://stackoverflow.com/questions/133925/javascript-post-request-like-a-form-submit – 2014-08-29 20:51:39