js 怎样能随意操作file对象的属性
在使用antd 的 upload 组件的时候 这时候要求需要把上传的文件进行压缩 然后上传至后端 采用 antd 的 beforeUpload 方法 返回 promise reslove 中把压缩好的文件发送
经过对比发现未压缩前upload的file中有一个uid的标识但是采用压缩好的文件对象时uid没有 导致整体上传错误而
压缩采用lrz库进行压缩把file对象压缩变成base64
dataURLtoFile=(dataurl, filename)=> {//将base64转换为文件
var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
while(n--){
u8arr[n] = bstr.charCodeAt(n);
}
console.log([u8arr])
console.log(filename)
return new File([u8arr], filename, {type:mime});
}
用这个函数把base64转换成file
通过翻看element的源码和rc-upload的源码 但是并没有发现在那个方法里面添加了uid的属性 请各位老哥指点
antd上传依赖的是rc-upload, 他的这个uid对你使用是没什么影响的, 是为了标示某个文件, 方便后续的定位处理, 比如abort这种终止就靠uid去找
源码里面都有的
https://github.com/react-comp...
getUid是一个产生uid的函数