2022年6月23日
今天遇到一个问题,node端通过 node-http-proxy-json
进行代理时,下载的文件出现乱码问题,这个问题是由于这个依赖包会对响应内容进行toString(),这种普通的toString会把非文本文件的内容弄成乱码,所以要注意这一点。
这个问题是在下载csv文件的时候发生的,csv文件是通过逗号分隔值以纯文本形式存储表格数据的文件。
但是excel富文本文件也可以存储成以csv后缀结尾的文件,但这种文件并不是纯文本,所以会在toString的时候乱码。
从而使得前端下载普通格式的csv文件正常,但是下载这种含有富文本的csv后缀结尾的文件时会损坏,但主要是node代理时用到了那个包内部的处理机制导致的。
可以在代理的那部分进行判断,如果是文件类型的响应,不对其内容进行解析,直接放过,判断的代码如下。
if (proxyResponse.headers['content-disposition']) {
logger.info('请求的URL: %s, 请求状态: %s, 请求的UUID: %s', request.url, '成功', request.uuid);
return;
}
上次更新时间: 10年18月2023日 01时57分53秒