【问题标题】:Get full file path in Node.js获取 Node.js 中的完整文件路径
【发布时间】:2015-07-09 12:07:02
【问题描述】:

我有一个将 csv 文件上传到特定文件夹的应用程序,例如“上传”。 现在我想获取该 csv 文件的完整路径,例如,D:\MyNodeApp\uploads\Test.csv

如何在 Node.js 中获取文件位置?我用multer上传文件。

【问题讨论】:

  • 需要知道你必须从什么信息开始。您是否已经有了没有路径的文件名?所有文件都进入同一个文件夹吗?此文件夹在运行时是否为已知位置?一个代码示例可能会有所帮助。

标签: javascript node.js


【解决方案1】:
var path = require("path");
var absolutePath = path.resolve("Relative file path");

你的目录结构例如:

C:->WebServer->Public->Uploads->MyFile.csv

你的工作目录是 Public,例如 path.resolve 就是这样。

path.resolve("./Uploads/MyFile.csv");

POSIX 主页/WebServer/Public/Uploads/MyFile.csv
WINDOWS C:\WebServer\Public\Uploads\MyFile.csv

此解决方案是多平台的,允许您的应用程序在 windows 和 posix 机器上运行。

【讨论】:

  • 我觉得这应该是公认的答案,因为它比其他答案更有帮助和实用性。
  • 在尝试了许多不同的解决方案来完成这个简单的任务(获取绝对路径)之后,你拯救了我的一天,你的答案终于奏效了
【解决方案2】:

从文件夹中获取所有文件并打印每个文件描述。

const path = require( "path" );
const fs = require( 'fs' );
const log = console.log;
const folder = './';

fs.readdirSync( folder ).forEach( file => {
   
   const extname = path.extname( file );
   const filename = path.basename( file, extname );
   const absolutePath = path.resolve( folder, file );

   log( "File : ", file );
   log( "filename : ", filename );
   log( "extname : ", extname );
   log( "absolutePath : ", absolutePath);

});

【讨论】:

    【解决方案3】:

    假设您正在使用带有 express 的 multer,请在您的控制器方法中尝试此操作:

    var path = require('path');
    
    //gets your app's root path
    var root = path.dirname(require.main.filename)
    
    // joins uploaded file path with root. replace filename with your input field name
    var absolutePath = path.join(root,req.files['filename'].path) 
    

    【讨论】:

      【解决方案4】:

      在 TypeScript 中,我根据相对文件路径做了以下操作。

      import { resolve } from 'path';
      
      public getValidFileToUpload(): string {
        return resolve('src/assets/validFilePath/testFile.csv');
      }
      

      【讨论】:

        【解决方案5】:

        如果您使用的是“dirent”类型:

        const path = require( "path" );
        full_path = path.resolve( path_to_folder_containing__dir_ent__ , dir_ent.name );
        

        类:fs.Dirent https://nodejs.org/api/fs.html#fs_dirent_name

        模块:fs.path https://nodejs.org/api/path.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-10-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-31
          • 2015-06-15
          • 2018-10-24
          相关资源
          最近更新 更多