无法下载文件Symfony 3.4和VueJS

时间:2018-09-08 16:47:03

标签: php symfony vue.js

我花了很多时间才问这个问题

我想从本地目录/Users/Desktop/symfony/project_dem/app/Resources/file.webm,下载文件,但是我总是出错。

所以我的控制器

public function getUrl(Request $request) 
{   
    $response = new BinaryFileResponse($file);
    $response->setAutoEtag(true);
    $response->headers->set('Content-Type', 'video/webm');
    return $response;
}

在VueJS中

axios.post('/api', {
    url: this.url,
    responseType: 'blob',
}).then((response) => {
    console.log(response.data);

    let blob = new Blob([response.data], {
            type: 'video/webm'
        }),
        url = window.URL.createObjectURL(blob);

    window.open(url);

}).catch(error => {
    console.log(error);
});

我进入response.data这样的控制台日志

enter image description here

**

我发现错误的是为什么服务器中的文件大小为6.2 MB,下载后为11.2,也许这是错误BinaryFileResponse吗?

**

谁能告诉我我做错了什么?谢谢。

1 个答案:

答案 0 :(得分:0)

因此, console.log(response.data)的输出似乎显示了一个二进制文件。我的意思是文件在那里。您说

不清楚
  

但是我总是出错了

尝试

axios.post('/api', {
    url: this.url,
    responseType: 'blob',
}).then((response) => { 
    let blob = new Blob([response.data], {
        type: 'video/webm'
    });
    url = window.URL.createObjectURL(blob);

    window.open(url);
}).catch(error => {
    console.log(error);
});

我认为这里的问题是,您没有在创建Blob的行的末尾放置半冒号。