這個彈框不是js調用哪個接口實現的,彈框的出現是瀏覽器的行為,一般都是通過后端實現的。
以java為例,點擊“下載”按鈕,向服務器發送下載請求,服務器接受請求并處理,重點來了,服務器處理完要向前端發response,這時候需要設置特定的response的header(我感覺瀏覽器出現選擇路徑等信息的對話框就是按照這個header判斷的,純粹個人猜測,有準確知道的,歡迎留言)
核心代碼大概是這個樣子:
//設置ContentType
response.setContentType("application/octet-stream; charset=utf-8");
//處理中文文件名中文亂碼問題
String fileName=new String(file.getName().getBytes("utf-8"),"ISO-8859-1");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
IOUtils.copy(new FileInputStream(file), response.getOutputStream());
我之前有寫過下載文件,瀏覽器彈出下載框的需求,一開始也是糾結于這個下載框是怎么出現的,后來發現,我的點錯了,最后使用的上面的代碼實現的,希望有所幫助