­

懷疑前端組件把我的excel文件搞壞了,怎麼證明

背景

我在做個需求,用戶通過excel上傳文件,文件中,每一行就是一條數據,後台批量處理;但是呢,用戶填的數據可能有問題,所以我後台想先做個檢查,然後在每一行中加一列,來指出這一行存在的問題。

我本來想的是,返回一個list(json返回),每個item就是一行數據,在界面上展示即可。

但是後邊又想到,如果直接返回excel,行不行?

好像是可以的。

最終就是這樣:接收一個文件,檢查後,返回原文件,只是,我自己加了一列,這一列存的是檢查結果。

但是,前端vue用的組件,渲染出來總是有問題,下載下來的檢查結果文件,打開是亂碼什麼的。

所以,我就想看看,返回的二進制是不是有問題?

檢測方法

我調用了一下那個接口,因為是本地測試,直接用本地wireshark抓包。下面這個是返回的報文,從上到下,依次就是計算機網絡那幾層,物理層/鏈路層/ip/tcp/http

http後邊是什麼呢?可以看到,wireshark很貼心地幫我們做了初步解析,是一個xls文件格式。裏面也可以看到,這個二進制流,大概是23040位元組。

二進制有了,接下來就是把這個二進制變成一個xls文件,看看這個二進制有沒有問題。其實哈,正常的下載文件接口,如果你瀏覽器直接調用這個接口下載也可以,但我這邊的前端組件很奇葩,它幫我拿到二進制後,好像又做了一層轉換,然後我拿到的文件就有問題了。

所以我才想到說,先拿到轉換前的二進制測試一下。

這裡直接說最簡單的辦法吧:

然後呢?

差不多就這樣了。

本來我也嘗試了用二進制編輯文件:hex editor來弄,不過比這個繁瑣,算了噻。

另外,大家要比較二進制的話,可以用beyond compare這個軟件。