Jquery django rest框架中向ajax调用返回二进制数据的自定义呈现
我正在对restapi进行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, }),
$.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的意思。还有其他方法可以处理二进制数据吗?