簡體   English   中英

使用iframe下載文件

[英]Use iframe to download file

目前,我正在使用POST形式下載文件:

var form = document.createElement("form");
var element1 = document.createElement("input");
var element2 = document.createElement("input");

form.target = "_blank";
form.method = "POST";
form.action = path;

element1.value = authService.getToken();
element1.name = "Authorization";
form.appendChild(element1);

element.append(form);

form.submit();
element.empty();

為了防止當服務器未發送正確的標題時當前頁面的位置發生變化,我打開將表單的目標設置為“ _blank”,以便在發生錯誤時將其顯示在另一頁上。 但是這里的問題是,瀏覽器默認情況下會阻止新標簽頁,並且我不想強迫用戶允許這種行為。 我讀過,還有一個選項可以將iframe的ID指定為目標。 就我而言,這行得通嗎? 然后,如何從iframe中讀取錯誤並顯示給用戶?

我現在正在解決這個非常嚴重的問題。 我發現從iframe返回狀態的最佳答案是在其中設置一個cookie。 理想情況下,cookie的名稱對於兩個頁面都知道的特定下載事件(我使用的是guid)應該是唯一的,並且它的值可以是錯誤消息,也可以是空值(表示成功)。 然后,父頁面會在javascript中輪詢此Cookie。 如果出現錯誤,我確保下載URL始終呈現cookie,因為很難了解有關iframe狀態的其他信息。 成功后,JS輪詢器可以隱藏“您的下載即將開始”消息,並刪除Cookie;失敗時,執行這些操作並顯示錯誤。

一個懸而未決的大問題是,它在移動瀏覽器中的運行情況如何。 彈出式窗口是它們的一個糟糕選擇,因為它們默認情況下默認為不提示即阻止它們……但是,盡管如此,仍有一個jQuery插件可用於iframe下載,當它移動時,它會返回到彈出窗口。 嚇死我了

暫無
暫無

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

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