Получить имя файла при загрузке файла - PullRequest
0 голосов
/ 16 мая 2019

Вот мое действие ...

[HttpGet]
public object Download()
{
    return File("file.png", MediaTypeNames.Application.Octet, "HiMum.png");
}

В браузере ...

axios({

            url: AppPath + 'download/',
            method: 'GET',
            responseType: 'blob'
        })
        .then(response => {



            console.log(JSON.stringify(response.headers));

            const url = window.URL.createObjectURL(new Blob([response.data]));
            const link = document.createElement('a');

            link.href = url;
            link.setAttribute('download', 'file.pdf');

            link.click();

            window.URL.revokeObjectURL(url);
        });

Трассировка показывает только ...

{"content-type":"application/octet-stream"}

Какя могу получить имя файла?Я пытался добавить ...

Response.Headers.Add("Content-Disposition", $"inline; filename=HiMum.png");

.. в действии.

1 Ответ

1 голос
/ 17 мая 2019

Вот рабочая демонстрация:

Сервер:

[HttpGet("Download")]
public object Download()
{
    return File("file.png", "application/octet-stream", "HiMum.png");
}

Клиент:

<script type="text/javascript">
    $(document).ready(function () {
        axios({
            url: 'download/',
            method: 'GET',
            responseType: 'blob'
        })
            .then(response => {
                console.log(JSON.stringify(response.headers));
                const url = window.URL.createObjectURL(new Blob([response.data]));
                const link = document.createElement('a');
                link.href = url;
                var filename = "";
                var disposition = response.headers['content-disposition'];
                console.log(disposition);

                if (disposition && disposition.indexOf('attachment') !== -1) {
                    var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
                    var matches = filenameRegex.exec(disposition);
                    if (matches != null && matches[1]) filename = matches[1].replace(/['"]/g, '');
                }
                console.log(filename);
                link.setAttribute('download', filename);
                link.click();
                window.URL.revokeObjectURL(url);
            });
    });
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...