场景
需要在上传文件前,修改文件名为固定值,比如 “好东西.apk”。
踩坑
错把文件类型当作了对象:
- 直接使用
obj.name = “好东西.apk”
,控制台报错显示obj 只能使用 get 方法
。 - 于是设置
setter
方法(Object.defineProperty()),但还是报相同的错误。
精准搜索后发现:file 类型文件是只读的,若想修改需要 new File()
重新创建一个文件类型。
httpRequest(param) {
const fileObj = param.file // 用户上传的文件
// 文件类型是只读的
const reNamedFile = new File([fileObj], "好东西.apk", {type: "apk"})
this.fd.append('file', reNamedFile) // 文件名修改后,文件上传到 fd (form-data格式)中
},