前言
因项目需要,后台需要支持接收前端的压缩文件并解析上传至云平台,一顿踩坑之后基本跑通了整条流程,下面写下来分享给那些像我一样的node小白~
实现过程
安装依赖
本次实现中依赖了node解压模块unzip
yarn add unzip
接收zip文件
之前在网上找了好多资料,基本上都是在服务器本地对各种文件进行操作,难道就没有从前端向后台传、解析压缩文件的先例嘛???
所以,直接从前端把zip文件抛过来,get!
项目UI是基于antd实现的,所以直接用Upload组件进行的上传,这里有个坑要踩,在默认设置下组件上传会报错:No ‘Access-Control-Allow-Origin’ header is present on the requested resource. 需要给组件设置属性
headers= { { 'X-Requested-With':null }}
get是get到了,但通过fs.createReadStream()
来直接读取拿到的buffer是总是回报这样那样的错误,经过一番苦苦搜寻,找到了这样一种解释:This means the library would like to do its own reading of the file rather than being given a stream of bytes for analysis.,大概意思就是node的方法希望接收的资源是资源的路径而不是资源本身,既然这样,那就把从前端获取的数据先存起来好了:
fs.writeFile(`${
__dirname}/temp/temp.zip`, z, function(e) {
···//这里的z就是从前端拿来的资源
})
这下就可以拿到想要的zip了吧,然后就可以为所欲为了。
fs.writeFile