簡體   English   中英

向Laravel發出POST請求,然后將字符串下載為文件

[英]POST request to Laravel then download string as a file

我有一個ajax POST請求發送到laravel控制器,這工作正常。 我在控制器中做了一些工作,然后得到了一個字符串,其大小可能從幾百千字節到幾百兆字節不等。

我想將此字符串下載為文件,並且一直在嘗試各種方法,但是問題是,每當我使用return將字符串傳遞給其他控制器或其他頁面時,它都會將輸出返回給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);

但最后,無論何時我使用return,它都會將數據發送回前端ajax。

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

從您的問題中尚不清楚要解決的問題-但這聽起來像是Javascript問題,而不是Laravel問題。

當您告訴javascript發出AJAX請求時,就是在告訴瀏覽器

嘿,請在后台下載此URL,並在完成后通知我。

AJAX響應將永遠不會觸發瀏覽器頁面刷新或文件下載。 代替AJAX請求,您需要將整個瀏覽器(通過document.locationwindow.open或類似的東西)完全重定向到另一個頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM