update at 2026-02-14 11:20:38
This commit is contained in:
@@ -103,4 +103,33 @@ describe('miniapp utils sankey', () => {
|
||||
expect(table.headers).toEqual(['source', 'target', 'value']);
|
||||
expect(table.rows).toEqual([['A', 'B', '1']]);
|
||||
});
|
||||
|
||||
it('文件名伪装为 csv 时,仍可根据二进制魔数识别 xlsx', () => {
|
||||
const sheet = XLSX.utils.aoa_to_sheet([
|
||||
['source', 'target', 'value'],
|
||||
['A', 'B', 1]
|
||||
]);
|
||||
const workbook = XLSX.utils.book_new();
|
||||
XLSX.utils.book_append_sheet(workbook, sheet, 'S1');
|
||||
const buffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'buffer' });
|
||||
const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
|
||||
|
||||
const table = parseTableByFileName('wrong.csv', arrayBuffer);
|
||||
|
||||
expect(table.headers).toEqual(['source', 'target', 'value']);
|
||||
expect(table.rows).toEqual([['A', 'B', '1']]);
|
||||
});
|
||||
|
||||
it('csv 二进制内容应按 utf8 正常解析', () => {
|
||||
const csvBuffer = Buffer.from('source,target,value\n甲,乙,1', 'utf8');
|
||||
const arrayBuffer = csvBuffer.buffer.slice(
|
||||
csvBuffer.byteOffset,
|
||||
csvBuffer.byteOffset + csvBuffer.byteLength
|
||||
);
|
||||
|
||||
const table = parseTableByFileName('demo.csv', arrayBuffer);
|
||||
|
||||
expect(table.headers).toEqual(['source', 'target', 'value']);
|
||||
expect(table.rows).toEqual([['甲', '乙', '1']]);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user