首页 > 解决方案 > RestAPI 无法下载从 Django API 发送到 sveltekit 客户端的文件 - 读取 PNG 图像文件的致命错误

问题描述

我有一个 Django Get APIView,它返回一个带有 png 图像数据的 FileResponse。当它在 sveltekit 客户端下载时,它不会被读取。它抱怨它不是png文件。不知道出了什么问题。这是服务器代码:

from django.http import FileResponse, HttpResponse
        import mimetypes
        # from django.core.files import File
        mime_type, _ = mimetypes.guess_type('qrcode.png')
        response = HttpResponse(open('qrcode.png', 'rb'), content_type=mime_type)
        # response = FileResponse(open('qrcode.png', 'rb'), content_type=mime_type)
        # response = HttpResponse(open('qrcode.png', 'rb'))
        # response = HttpResponse(open('qrcode.png', 'rb'), content_type='application/png')
        # response = HttpResponse(FileWrapper(img), content_type='application/png')
        response['Content-Disposition'] = 'attachment; filename=qrcode.png'
        return response

我已经评论了我尝试过的所有可能性。现在这里是客户端代码:

if (res.status == 200){
        qrimage = await res.data;
        console.log(typeof(qrimage));
        // const blob = new Blob(qrimage);
        // let url = window.URL.createObjectURL(blob);
        // let url = window.URL.createObjectURL(qrimage);
        let a = document.createElement("a");
        // console.log(url);
        a.href = 'data:image/png;'+qrimage;
        a.target = '_blank';
        a.download = 'qrcode.png';
        a.click();
        // });
    }

感谢您的帮助和评论。

标签: javascriptdjangodjango-rest-frameworksvelte

解决方案


推荐阅读