因为有上传大文件的需求,所以准备使用ufile做存储,可以有效利用服务器内网带宽
于是开始看起ufile的sdk和文档,结果发现
稍微再往下翻翻
你用utf8读二进制文件……能不丢字节才有鬼哦
tab和空格混写又是几个意思
最终一怒之下放弃了nodejs的sdk,自己实现的签名算法,结果看前端的jssdk的时候
初始化分片的xhr请求有个ajax.send(file),直接把文件发上去了,那我还分片个P啊……
还好这里只是写的人脑残,把file拿掉就行
然后发现最终合并分片的请求会403,报invalid signature,而且不是所有文件都会出现
后来发现,一部分文件在input选择后浏览器不会识别,拿到的file.type是空字符串,而签名会用到这个字段,这时候发给后台签名的就是空字符串,而浏览器在发请求的时候会带一个默认的content-type,导致服务端拿到的头和实际上签名的头不一致而报invalid signature
只好给所有用到content-type的地方都给一个application/octet-stream的默认值了
目前能正常分片上传了