NodeJS 具有自定义属性的文件对象

hc8w905p  于 2023-05-17  发布在  Node.js
关注(0)|答案(3)|浏览(141)

我想用自定义文件属性在服务器上存储文件。在客户端添加属性:

let file = new File([blob], 'flower.jpg')
file.custom = "another properties"

这给了我

custom:"another properties"
lastModified:1524742832101
lastModifiedDate:Thu Apr 26 2018 13:40:32 GMT+0200 (W. Europe Daylight Time {}
name:"flower.jpg"
size:845941
type:"image/jpeg"
webkitRelativePath:""

当我将此文件发送到我的节点服务器时,自定义属性将被删除。我使用formData和multer进行文件上传。

fieldname: 'images',
originalname: 'flower.jpg',
encoding: '7bit',
mimetype: 'image/jpeg',
destination: 'uploads/',
size: 845941

是否有一种方法来存储包括自定义属性的文件?

u59ebvdq

u59ebvdq1#

我在使用multer / express时遇到了类似的情况,最终为每个上传的文件附加了一个额外的属性。然后从服务器上的req.body中提取与文件名匹配的附加属性。我们的用户界面防止重复的文件名,所以这对我们来说很好。

const data = new FormData();

files.forEach((file) => {
  data.append('form-key', file);
  data.append(file.name, file.identifier);
});
u0njafvf

u0njafvf2#

像这样使用Object.defineProperty()

const object1 = {};

Object.defineProperty(object1, 'property1', {
  value: 42,
  writable: false
});

object1.property1 = 77;
// throws an error in strict mode

console.log(object1.property1);
// expected output: 42

更多详情https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty

4ioopgfo

4ioopgfo3#

在我自己的例子中,我只是将带有附加属性的FormData作为数组键值对发送到后端,例如:。

let file = new File([blob], 'flower.jpg');
let formData = new FormData();
formData.append("file[property]", file);

相关问题