Как загрузить файл docx с помощью django\react?

Я пытаюсь скачать test.docx, но размер файла и его содержимое неверны.
Например, размер исходного файла 14 кб, скачанного 22 кб

Исходный файл содержит таблицу (если это важно)

Но он корректно работает с pdf и txt

view.py

@method_decorator(csrf_exempt, name="dispatch")
class TestDownloadView(View):

    def post(self, request):
        filename = "./test.docx"
        with open(filename, "rb") as blank:
            content = blank.read()
            response = HttpResponse(
                content,
                content_type="application/vnd.openxmlformats-officedocument.wordprocessingml.document",
            )
            response["Content-Length"] = len(content)
            response["Content-Disposition"] = "attachment; filename=test.docx"
            return response

App.tsx

function App() {

        const dload = () => {
                axios.post('http://127.0.0.1:8000')
                        .then(response => {
                                const type = response.headers['content-type']
                                const href = URL.createObjectURL(new Blob([response.data], { type: type }));
                                const link = document.createElement('a');
                                link.href = href;
                                link.setAttribute('download', 'file.docx');
                                document.body.appendChild(link);
                                link.click();
                                document.body.removeChild(link);
                                URL.revokeObjectURL(href);
                        })
        }
        return (
                <>
                        <button onClick={dload}> Click </button>
                </>
        )
}

Я уже пробовал разные типы содержимого.

Если кому-то это поможет, вот решение

axios.post('http://127.0.0.1:8000', {}, { responseType: "blob" }) 
// axios post with empty data and response type(important`)
    .then(response => {
        const type = response.headers['content-type']
        console.log(response.headers)
        const href = URL.createObjectURL(new Blob([response.data], { type: type }));
        const link = document.createElement('a');
        link.href = href;
        link.setAttribute('download', 'file.docx');
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link);
        URL.revokeObjectURL(href);
})
Вернуться на верх