第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Yi2 使用 SendFile() 下載文件

Yi2 使用 SendFile() 下載文件

PHP
大話西游666 2021-12-03 16:28:33
我正在嘗試使用 Yii2 提供的內(nèi)置函數(shù) sendFile() 來允許用戶下載文件。但是,這不會(huì)實(shí)際下載文件。下面是我的ajax代碼 $.ajax({     url: 'https://'+window.location.hostname+'/download',     dataType: "json",     type: 'POST',     data: {name: name},   })服務(wù)端代碼  $filename = "test.txt";  $path = Yii::getAlias('@webroot')."/uploads/test.txt";  Yii::$app->response->sendFile($path, $filename)->send();  //I've also tried variations of the file path and name. E.G:  $filename = "test.txt";  $path = Yii::getAlias('@webroot')."/uploads";上面提供的代碼是我目前用來下載文件的代碼。當(dāng)用戶單擊下載圖標(biāo)時(shí),會(huì)對(duì)包含上述邏輯的操作進(jìn)行 Ajax 調(diào)用,從而將該文件發(fā)送到用戶的瀏覽器。進(jìn)行 Ajax 調(diào)用時(shí),服務(wù)器返回200但實(shí)際上并未下載文件。相反,響應(yīng)中是所請(qǐng)求文件的內(nèi)容。例如,如果用戶請(qǐng)求包含文本的文件'Hello there!',當(dāng) Ajax 調(diào)用完成時(shí),將不會(huì)下載任何內(nèi)容,但服務(wù)器響應(yīng)(如通過 FireFox 開發(fā)工具看到的)顯示'Hello there!'。有什么原因不能下載文件本身嗎?如果我只是導(dǎo)航到localhost/downloadFile另一個(gè)選項(xiàng)卡中的 url(可以說它的),則會(huì)調(diào)用該操作,打開下載對(duì)話框,然后我可以下載文件。
查看完整描述

1 回答

?
DIEA

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊

  1. 你必須做return的第一件事是聲明,如果你從控制器動(dòng)作返回它,則send()在之后沒有任何調(diào)用的用途sendFile(),只需保持如下所示

     return Yii::$app->response->sendFile($path, $filename);
  2. Ajax 不適用于文件下載,您應(yīng)該創(chuàng)建一個(gè)彈出窗口或簡(jiǎn)單地使用

     window.location.assign('https://'+window.location.hostname+'/download/'+name);

您將看到該頁面不會(huì)更改您當(dāng)前所在的頁面,并且將觸發(fā)文件下載對(duì)話框。


查看完整回答
反對(duì) 回復(fù) 2021-12-03
  • 1 回答
  • 0 關(guān)注
  • 589 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)