Jquery django rest框架中向ajax调用返回二进制数据的自定义呈现

Jquery django rest框架中向ajax调用返回二进制数据的自定义呈现,jquery,ajax,django,rest,django-rest-framework,Jquery,Ajax,Django,Rest,Django Rest Framework,我正在对restapi进行ajax调用,希望得到原始的二进制数据 $.ajax({ url: 'verify', type: 'POST', contentType: "application/json; charset=utf-8", data: JSON.stringify({ "url": url, }),

我正在对restapi进行ajax调用,希望得到原始的二进制数据

        $.ajax({
            url: 'verify',
            type: 'POST',
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify({
                "url": url,
            }),
            dataType: "application/octet-stream",
            success: function(response, textStatus, jqXhr) {
                if (response) {
                    try {
                        // do something
                    } catch (e) {
                        displayError(e);
                    }
                }
            },
            error: function(jqXHR, textStatus, errorThrown) {
                // loader.remove();
                // $.unblockUI();
                console.log(textStatus); // parsererror
                console.log(errorThrown); // No conversion from text to application/octet-stream
                var err = parseError(jqXHR, textStatus, errorThrown);
                displayError(err);
            }
        });
restful API是

from rest_framework.renderers import BaseRenderer
class BinaryRenderer(BaseRenderer):
    media_type = 'application/octet-stream'
    charset = None
    format = '.bin'

    def render(self, data, media_type=None, renderer_context=None):
        return data


from rest_framework.response import Response
import urllib2
class MyView(APIView):
    renderer_classes = (BinaryRenderer,)
    def post(self, request):
        url = request.DATA['url']
        conn = urllib2.urlopen(url)
        byte = conn.read()
        conn.close()
        return Response({'blob':byte})
服务器返回代码200,但由于
parseError
errorshown
显示
没有从文本到应用程序/八位字节流的转换,ajax跳转到错误

为什么响应的内容类型是
text
,而不是
octet-stream


谢谢

我最近遇到了这个问题-通过AJAX获取二进制数据

拯救了这一天

JSZipUtils.getBinaryContent("path/to/file.zip", function (err, data) {
if(err) {
  throw err; // or handle the error
}
// do something with data
});

ajax没有流数据类型。你想对这个响应做什么?实际上,这是一个zip二进制数据,所以我想在ajax回调中解压缩zip二进制数据。这不是ajax的意思。还有其他方法可以处理二进制数据吗?