上传到sharepoint网站时,我需要更改文件名(不是文件,只是名称的元数据)。
我认为在javascript中更改html属性比使用Sharepoint后端更容易。因此,当我上传文件时,它会更改文件的名称(而不是数据)
类似的东西:
function PreSaveAction(){
var file = document.GetElementById('fileupload1');
file.files[0].name='ChangedName.tmp'
return true;
}
由于锁定输入='文件'属性的性质,这是不可能的吗?
答案 0 :(得分:15)
试试这个:
var file = document.GetElementById('fileupload1');
var blob = file.files[0].slice(0, file.files[0].size, 'image/png');
newFile = new File([blob], 'name.png', {type: 'image/png'});
请注意: 这是针对图片类型的,您必须使用您实际使用的类型更改此类型。
答案 1 :(得分:2)
从读取https://developer.mozilla.org/en-US/docs/Web/API/File/File#Syntax到bits
构造函数的File
参数可以是Blob
对象的数组。
bits
ArrayBuffer,ArrayBufferView,Blob,USVString的数组 对象,或任何此类对象的混合,将被放置在 文件。 USVString对象编码为UTF-8。
从阅读https://developer.mozilla.org/en-US/docs/Web/API/File#Methods可以看出File
是从Blob
继承来的:
File接口没有定义任何方法,但是继承了方法 通过Blob界面
因此,new File([originalFile])
是有效的。
我想出了以下对我有用的东西:
function renameFile(originalFile, newName) {
return new File([originalFile], newName, {
type: originalFile.type,
lastModified: originalFile.lastModified,
});
}
答案 2 :(得分:0)
一种更简单,更节省内存的方法-将文件的'name'属性更改为可写:
xunit.diagnosticMessages
其中fileToAmend是文件,updatedFileName是新文件名。
方法来自 Cannot assign to read only property 'name' of object '[object Object]'