Не удается скачать файл Symfony 3.4 и VueJS - PullRequest
0 голосов
/ 08 сентября 2018

Я потратил время, прежде чем задавать этот вопрос

Я хочу скачать файл из локального каталога /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 МБ и после загрузки 11,2 может быть это ошибка BinaryFileResponse?

**

Кто-нибудь может сказать мне, что я сделал не так?и спасибо.

1 Ответ

0 голосов
/ 09 сентября 2018

Похоже, что вывод 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-объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...