我正在尝试使用 Yii2 提供的内置函数 sendFile() 来允许用户下载文件。但是,这不会实际下载文件。
下面是我的ajax代码
$.ajax({
url: 'https://'+window.location.hostname+'/download',
dataType: "json",
type: 'POST',
data: {name: name},
})
服务端代码
$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";
上面提供的代码是我目前用来下载文件的代码。当用户单击下载图标时,会对包含上述逻辑的操作进行 Ajax 调用,从而将该文件发送到用户的浏览器。
进行 Ajax 调用时,服务器返回200但实际上并未下载文件。相反,响应中是所请求文件的内容。例如,如果用户请求包含文本的文件'Hello there!',当 Ajax 调用完成时,将不会下载任何内容,但服务器响应(如通过 FireFox 开发工具看到的)显示'Hello there!'。
有什么原因不能下载文件本身吗?
如果我只是导航到localhost/downloadFile另一个选项卡中的 url(可以说它的),则会调用该操作,打开下载对话框,然后我可以下载文件。
DIEA