JavaScript无法在上载前重命名文件
我正在尝试将文件上载到aws s3。在上传之前,我想通过在文件名中添加时间戳来重命名它。但我得到了一个错误,因为“无法分配给对象“#”的只读属性“name” 这是密码JavaScript无法在上载前重命名文件,javascript,reactjs,amazon-s3,Javascript,Reactjs,Amazon S3,我正在尝试将文件上载到aws s3。在上传之前,我想通过在文件名中添加时间戳来重命名它。但我得到了一个错误,因为“无法分配给对象“#”的只读属性“name” 这是密码 let file = e.target.files[0]; let timeStamp = (new Date()).getTime(); let fileExt = file.name.split('.')[file.name.split('.').length-1]; let fileNameWithoutExt = file
let file = e.target.files[0];
let timeStamp = (new Date()).getTime();
let fileExt = file.name.split('.')[file.name.split('.').length-1];
let fileNameWithoutExt = file.name.replace(`.${fileExt}`,'');
let newFileName = fileNameWithoutExt + '_' + timeStamp + '.' + fileExt;
file.name = newFileName;
是的,将其设置为只读似乎是一个奇怪的规则,但它就是这样。。。 所以解决方法,不是那么难,是从以前的文件对象创建一个新的文件对象
var previous_file=新文件(['foo'],'file.txt',{type:'text/plain'});
试一试{
previous_file.name='hello.txt';
}
捕获(e){}
console.log(上一个文件名);//没用
//所以我们只是从中创建一个新文件。。。
var new_file=新文件([previous_file],'hello.txt');
console.log(新的_文件)代码>
- 无法更改已创建文件的名称李>
- 您可以创建
具有新文件名的文件的新实例,如上面的帖子中所述。但是
并非所有浏览器都支持文件构造函数(IE和EDGE不支持)李>
- 你可以把新的
amazon上载的密钥属性的文件名
而不是key=“folder1/folder2/${filename}”
您可以编写key=“folder1/folder2/youfilename.txt”
FormData的append()方法接受第三个可选文件名参数
// new file name as a variable with timestamp
const newName = new Date().getTime() + event.target.files[0].name;
fd.append('file[]', event.target.files[0], newName);
name
是Object
Object中预定义的属性,请尝试分配不同的属性名称,如fileName
Related Thank@Alex。但我想在浏览器本身中执行此操作。@pratik-n是的,您可以(创建新文件),但这在IE和EDGE上不起作用:)@pratik-n您可以更改浏览器端的键变量吗?谢谢@kaido。以上IE 11支持,谢谢@kaido。为s3参数设置关键变量对我来说是可行的。如果不使用aws s3,您的解决方案可能会有所帮助。简单明了。谢谢@Theotonio