删除文件路径和文件名,使用 Node 将文件名留在 AWS Lambda 中

Posted

技术标签:

【中文标题】删除文件路径和文件名,使用 Node 将文件名留在 AWS Lambda 中【英文标题】:Remove file path and file name, leaving filename in AWS Lambda using Node 【发布时间】:2019-06-26 00:18:27 【问题描述】:

我希望提取文件路径,然后是带扩展名的文件名,本质上让我使用 Node.js 从 AWS Lambda 中的事件对象中提取文件名和文件

这是一个示例文件路径

/home/mysite/public_html/services/wp-content/uploads/woocommerce_uploads/wcj_uploads/input_fields_uploads/myfilename.docx
var docfilename = event.line_items[0].meta_data[0].value.tmp_name;
var docextension = event.line_items[0].meta_data[0].value.tmp_name;

console.log(event.line_items[0].meta_data[0].value.tmp_name);

所需的输出在第一个实例中只是“myfilename”,在第二个实例中是“myfilename.docx”

【问题讨论】:

nodejs get file name from absolute path?的可能重复 【参考方案1】:

如果我理解正确,你可以使用 Node.js 内部的path 模块:

'use strict';

const path = require('path');

const fullPath = '/home/mysite/public_html/services/wp-content/uploads/woocommerce_uploads/wcj_uploads/input_fields_uploads/myfilename.docx';

const extension = path.extname(fullPath);
const justFileName = path.basename(fullPath, extension);
const fileNameWithExtension = path.basename(fullPath);

console.log(justFileName);
console.log(fileNameWithExtension);
myfilename
myfilename.docx

【讨论】:

这看起来很棒。将来可能会使用其他文件扩展名。有什么办法可以在 justFileName 扩展名中使用 txt、rtf 等? 您可以使用path.extname 来确定文件的扩展名,然后path.basename 作为回答者显示,如果需要,只获取基本文件名。 是的,我已经更新了示例。您也可以查看nodejs.org/api/path.html了解更多详情。【参考方案2】:

为了实现这一点,我建议像这样使用the split method:

var filePath = "/home/mysite/public_html/services/wp-content/uploads/woocommerce_uploads/wcj_uploads/input_fields_uploads/myfilename.docx";

let split1 = filePath.split("/"); // splits at the / character -> variable is an array containing all folders and the "myfilename.docx"

let split2 = split1[split1.length - 1]; // only takes the part after the last / -> variable is equal to "myfilename.docx"

let done = split2.split(".")[0]; // only takes the part before the . -> variable is equal to "myfilename"

console.log(done);

【讨论】:

【参考方案3】:

您可以先用/ 拆分,然后再用. 拆分最后一个元素并取出第一个元素。

let filePath = `/home/mysite/public_html/services/wp-content/uploads/woocommerce_uploads/wcj_uploads/input_fields_uploads/myfilename.docx`

let splited = filePath.split('/').pop().split('.')[0]

console.log(splited)

【讨论】:

以上是关于删除文件路径和文件名,使用 Node 将文件名留在 AWS Lambda 中的主要内容,如果未能解决你的问题,请参考以下文章

Windows中删除路径太长目录及文件

拖放是否将文件名留在可访问的位置(macos)?

如何使用 HTML 输入文件导入 excel 文件并在 Node.js 中读取文件内容(如何将完整路径发送到 Node.js)

powershell 使用PowerShell以递归方式删除Windows中所有子文件夹中的`node_modules`文件夹,以避免超出路径max_length

快速删除node_modules文件夹

linux恢复误删除文件-extundelete