javascript ajax pdf download返回空文档

时间:2018-01-25 14:02:25

标签: javascript ajax pdf blob

我有一个返回pdf文件的请求。它可以在浏览器中很好地显示,由curl下载。

我的反应前端应用程序调用此请求(ajax),并将其返回给用户。

这是我怎么称呼它:

TotalAnnualCostCalculator

这是httpRequest:

httpRequest({
    method: 'GET',
    responseType: 'blob',
    url: `/test/pdf?` +
            `param1=${var1}&` +
            `param2=${var2}`
});

};

得到回复后,我将其返回给用户:

export const httpRequest = (options) => {
return new Promise((resolve, reject) => {
    const contentType = options.contentType ? options.contentType : 'application/x-www-form-urlencoded';
    request.open(options.method, options.url, async);
    request.setRequestHeader('Content-Type', contentType);
    request.onreadystatechange = () => {
        if (request.readyState === readyState && request.status === status) {
            switch (responseType) {
                case 'json': {
                    if (request.responseText) {
                        resolve(JSON.parse(request.responseText));
                    } else {
                        throw new Error('Can not parse JSON!');
                    }
                    break;
                }
                case 'string': {
                    resolve(request.responseText);
                    break;
                }
                case 'blob': {
                    resolve(request.response)
                }
                default: {
                    resolve(request);
                    break;
                }
            }
        }
    };
    request.send(data);
});

它返回空pdf(两个空页)。它的大小(以字节为单位)大约是正常pdf内容的两倍(我从curl得到它)。

这是两个pdf之间的典型差异(好的是左,坏是对的) http://storage5.static.itmages.com/i/18/0125/h_1516888730_3382943_f47d4f9cbe.png

我的代码有什么问题?任何解决方法?

1 个答案:

答案 0 :(得分:1)

看起来好像返回响应部分是正常的,所以尝试检查httpRequest() - 如果正确应用了参数,例如responseType。请分享代码,它可能会提供更多信息。