删除文件路径和文件名,使用 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 中的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 HTML 输入文件导入 excel 文件并在 Node.js 中读取文件内容(如何将完整路径发送到 Node.js)
powershell 使用PowerShell以递归方式删除Windows中所有子文件夹中的`node_modules`文件夹,以避免超出路径max_length