首页 > 解决方案 > 下载文件时“构造‘Blob’失败:提供的值无法转换为序列”

问题描述

我正在尝试使用 ajax/jquery 下载并保存 PDF 文件(我知道..)。

这是我在服务器端所拥有的:

        public HttpResponseMessage GetPdf()
        {
            var pdf = generatePdfByteArray(); // byte[]

            var result = Request.CreateResponse(HttpStatusCode.OK);
            result.Content = new ByteArrayContent(pdf);
            //result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            //{
            //    FileName = "blah.pdf"
            //};
// tried with and without content disposition.. shouldn't matter, i think?
            result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");

            return result;
        }

这是客户端:

    let ajaxOptions = {
    url: '/url',
    type: "GET",
    accepts: "application/pdf",
    success: (data) => {
        let blob = new Blob(data, {
            type: "application/pdf"
        }); // <-- this fails

        // stuff...
    }
};
$.ajax(ajaxOptions);

任何想法这有什么问题?

标签: jqueryajaxasp.net-web-api2

解决方案


第一个参数应该是序列。

因此,这将不起作用:

let blob = new Blob(data, {
    type: "application/pdf"
});

但这将:

let blob = new Blob([data], {
    type: "application/pdf"
});


推荐阅读