1. 程式人生 > >ajax請求不能下載檔案

ajax請求不能下載檔案

最近在做檔案下載,後臺寫了個控制層,直接走進去應該就可以下載檔案,各種檔案圖片,excel等 但是起初老是下載失敗,並且彈出下面的亂碼:

前臺請求程式碼:

$('#fileexcel').unbind('click').bind('click',function(){
                    alert("我要下載了");
                    $.ajax({
                        type:'post',
                        url:'media',
                        data:null,
                        async:true,
                        success : function(msg){
                            alert(msg);
                        }
                    })
                })

看起來貌似沒有任何問題,但就不能下載。 本來認為是後臺程式碼有問題,但是將網上的各種demo放進去還是有問題。 在坑了一天後,終於發現問題所在了。 那就是請求方式有問題,檔案下載的請求是不能寫在ajax裡面的! 寫成下面這樣的就可以了:
<a href="/media">點選下載Excel</a>
或者
location.href = '/media';
這次點選下載就出現如下理想效果。


然後總結一下為什麼下載請求不能放在ajax裡傳送: 原因:因為response原因,一般請求瀏覽器是會處理伺服器輸出的response,例如生成png、檔案下載等,然而ajax請求只是個“字元型”的請求,即請求的內容是以文字型別存放的。檔案的下載是以二進位制形式進行的,雖然可以讀取到返回的response,但只是讀取而已,是無法執行的,說白點就是js無法呼叫到瀏覽器的下載處理機制和程式。

相關推薦

Ajax請求下載檔案

以前我這樣做,現在感覺很low: window.location.href = "http://127.0.0.1:8080/wx-sr-api/xxx/export"; 現在可以這樣做,直接上程式碼,我這裡貼的是AngularJS的HTTP請求函式,a

關於ajax請求下載檔案的問題

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {CloseableHttpClient httpClient = Http

ajax get請求 下載檔案

exportExl(url,name){ axios.get(url).then(res => { const BOM =

ajax實戰:(ajax非同步下載檔案請求二進位制流進行處理

需求 管理後臺需要隨時下載資料報表,資料要實時生成後轉換為excel下載 檔案不大,頁面放置“匯出”按鈕,點選按鈕後彈出儲存檔案對話方塊儲存 說明:第一種方法使用a標籤直接可以滿足大部分人需求,第二種方法純粹是在說實現方法以及更好的操作體驗,不需要(舉一個需

轉發:傳送post請求下載檔案

原文地址:https://blog.csdn.net/yunlala_/article/details/78385962 處理檔案流方案一 以下是我親試可以實現的一種方案: exportData () { const form = this.getSearc

ajax請求下載Execl表

Execl表是經常要用到的存放二位資料的表格,Java也可以直接操作Execl表,經常用到的方式就是jxl和poi。 在這次專案中,我用到的poi往Execl中寫資料,剛開始設計的是前端傳送一個ajax請求,後端響應後再瀏覽器下載Execl表。 function exportGjOil(){

前端適用axios請求下載檔案,後端使用java返回。頭部需要帶請求資訊

問題:由於下載檔案需要帶頭部的時區或者token,所以不能模擬a標籤重新請求, 已解決: 前端如下 1. 我的請求 isDownload: true, responseType: 'blob', // arraybuffer 這兩個引數 2. 我用的是axi

Ajax處理下載檔案response沒有反應

要實現下載Excel的功能,思路很簡單,後臺servlet根據資料庫的資料生成Excel儲存在指定位置,然後儲存到response的輸入流中,最後將零時的Excel刪除: .... //省略poi生成Excle的過程 .... response.setHea

jquery ajax 無法下載檔案

var form = $("<form>"); form.attr('style','display:none'); form.attr('target',''); form.attr('method','post'); form.attr('action','excelEx

linux c用url請求下載檔案

#include <stdio.h>  #include <unistd.h>  #include <sys/types.h>  #include <sys/socket.h>  #include <sys/stat.h

ajax批量下載檔案,動態構建一個Form 並且提交獲取返回的檔案

//批量下載檔案(打包)function button_downloadplus(url) {var rows = $('#exampleTableEvents').bootstrapTable('getSelections');    //返回所有選擇的行,當沒有選擇的記錄

Ajax實現下載檔案功能

剛開始學習Asp的時候我們實現下載功能可能是這樣<form id="form1" runat="server">     ASP:<asp:Button runat="server" ID="btn2" Text="下載檔案" OnClick="btn2_o

關於Ajax無法下載檔案到瀏覽器本地的問題

最近在做網站的時候遇到這樣一個功能,在如圖所示的頁面中,需要使用者點選連結的時候,能夠以非同步Ajax的方式判斷伺服器中是否儲存有相應的Excel檔案,如果沒有的話就提示使用者沒有找到,如果有的話就下

POST請求下載檔案

今天幫同事看一個問題:後端由於種種原因(不想改介面或者說前端引數過大),只能接受用post去下載檔案。 正常情況下第一反應是用xhr物件去傳送post請求,結果並沒有觸發瀏覽器的下載。看了一下resp

http請求下載檔案

最近遇到一個請求需要從資料庫查詢出來,然後點選下載,可以下載從資料庫查詢的的資料,並換行顯示。 @RequestMapping("downLoadCardListByCardType") public void downLoadCardListByCardType(St

php curl 請求下載檔案,以及同時向介面傳送引數和檔案

最近在弄抓取資料,自然而然用到curl,結合其中遇到的一些問題,google了很久,加上自己嘗試,最後都解決了。 首先是php curl 從url 下載檔案 function getImage($url, $fileName) { $ch = curl

Axios傳送post請求下載檔案

傳送post請求下載檔案 先說一下背景:這是一個以vue作為框架並用Axios來發送http請求的專案。我想要實現用axios來發送post請求,然後伺服器會返回的response是一個檔案流,我希望能將這個檔案流寫入excel,從而實現該excel檔案的下載

轉載ajax 請求不能下載檔案

$('#fileexcel').unbind('click').bind('click',function(){          alert("我要下載了");          $.ajax({                        type:'post',

解決ajax請求不能下載檔案

我們在使用ajax請求去向服務端下載檔案時,我們通常從服務端拿到的只是一個字串,jquery自動的將檔案中的內容解析為字串傳給我們,此時,我們便不能再使用jquery的ajax請求來下載檔案 我們可以做如下操作來使用表單提交的方法來獲取下載檔案(推薦): function downloa

Ajax請求匯出(下載檔案

最近做檔案匯出,由於登入認證方式改為oauth方式,請求後臺匯出介面需要設定請求頭。所以傳統的通過form提交的方式並不能滿足需求,故而通過原生ajax的方式來實現。1.實現前端html<!DOCTYPE html> <html lang="en">