【Web前端问题】js 怎样能随意操作file对象的属性

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...

  uploadFiles = (files) => {

const postFiles = Array.prototype.slice.call(files);

postFiles

.map(file => {

`file.uid = getUid()`;

return file;

})

.forEach(file => {

this.upload(file, postFiles);

});

};

getUid是一个产生uid的函数

回答:

你上传前的也不是 base64,是个对象!

回答:

我刚刚也遇到这个问题了,还不知道怎么解决
十分钟后:解决了
就是给新的 file 对象 添加和它一样的 uid :
newFile['uid'] = file.uid

回答:

请问你的问题解决了吗?我也遇到了相同的问题

以上是 【Web前端问题】js 怎样能随意操作file对象的属性 的全部内容, 来源链接: utcz.com/a/135354.html

回到顶部