2017-04-05 178 views
0

我想知道是否可以使用现有文件的路径在NodeJS中创建文件对象(名称,大小,数据等)?我知道它可能在客户端,但我没有看到任何NodeJS。如何用NodeJS中的路径创建文件对象?

在别人的话,我想的NodeJS相同功能的工作原理:

function srcToFile(src, fileName, mimeType){ 
    return (fetch(src) 
     .then(function(res){return res.arrayBuffer();}) 
     .then(function(buf){return new File([buf], fileName, {type:mimeType});}) 
    ); 
} 

srcToFile('/images/logo.png', 'logo.png', 'image/png') 
.then(function(file){ 
    console.log(file); 
}); 

而且输出中会像:

File {name: "logo.png", lastModified: 1491465000541, lastModifiedDate: Thu Apr 06 2017 09:50:00 GMT+0200 (Paris, Madrid (heure d’été)), webkitRelativePath: "", size: 49029, type:"image/png"…} 
+0

您正在寻找[fs.stat](https://nodejs.org/api/fs.html#fs_fs_stat_path_callback),但如果您想要文件中的数据,您需要将它与[fs .readFile](https://nodejs.org/api/fs.html#fs_fs_readfile_file_options_callback)。 –

回答

0

因此,我用File Systems和其他方法进行搜索,并且没有任何东西。 我决定用JSON创建自己的File对象。

var imagePath = path.join('/images/logo.png', 'logo.png'); 

    if (fs.statSync(imagePath)) { 
    var bitmap = fs.readFileSync(imagePath); 
    var bufferImage = new Buffer(bitmap); 

    Magic = mmm.Magic; 
    var magic = new Magic(mmm.MAGIC_MIME_TYPE); 
    magic.detectFile(imagePath, function(err, result) { 
      if (err) throw err; 
      datas = [{"buffer": bufferImage, "mimetype": result, "originalname": path.basename(imagePath)}]; 
      var JsonDatas= JSON.parse(JSON.stringify(datas)); 
      log.notice(JsonDatas); 
    }); 
} 

输出:

{ 
    buffer: 
    { 
    type: 'Buffer', 
    data: 
    [ 
     255, 
     216, 
     255 
     ... 24908 more items, 
     [length]: 25008 
    ] 
    }, 
    mimetype: 'image/png', 
    originalname: 'logo.png' 
} 

我觉得可能不是更好的解决方案,但它给我我想要的东西。如果您有更好的解决方案,欢迎您。

-2

您可以使用arrayBuffer(那是什么我做制作可下载pdf)或createReadStream/createWriteStream在fs(FileSystem对象)下

相关问题