获取node.js中的文件完整路径

ImC*_*der 23 javascript node.js

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

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

提前致谢

小智 77

var path = require("path");
var absolutePath = path.resolve("Relative file path");
Run Code Online (Sandbox Code Playgroud)

你的dir结构例如:

C: - > WebServer->公开 - > Uploads-> MyFile.csv

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

path.resolve("./Uploads/MyFile.csv");
Run Code Online (Sandbox Code Playgroud)

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

这个解决方案是多平台的,允许您的应用程序在Windows和posix机器上工作.

  • 我觉得这应该是一个可以接受的答案,因为它比其他答案更有帮助和实用。 (3认同)

Del*_*man 14

根据所提供的信息,我们可以做的很少,但我会做一些补充:

  • 您的"上传"文件夹位于您的应用文件夹中.
  • 目录结构非常简单并且已修复,因此您拥有应用程序文件夹并且下面有一个级别,您有"上传"文件夹.

然后,您可以获得这些文件的完整路径,如下所示:

//index.js
var filename = "myfile.csv"; ///you already have this one.
var fullpath = __dirname + "/uploads/" + filename;
Run Code Online (Sandbox Code Playgroud)

就是这样,通过使用__dirname(参见此处的文档)变量,您可以获得index.js文件的完整路径,然后您可以手动添加其余文件.

  • 这是不准确的。__dirname返回相对于正在运行的脚本的路径。(ubuntu上的node.js v10.15.1) (4认同)

M. *_*put 14

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

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);

});
Run Code Online (Sandbox Code Playgroud)


has*_*sin 6

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

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) 
Run Code Online (Sandbox Code Playgroud)


Alf*_*bel 5

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

import { resolve } from 'path';

public getValidFileToUpload(): string {
  return resolve('src/assets/validFilePath/testFile.csv');
}
Run Code Online (Sandbox Code Playgroud)