iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Js怎么根据文件夹目录获取Json数据输出demo
  • 253
分享到

Js怎么根据文件夹目录获取Json数据输出demo

2023-07-05 16:07:47 253人浏览 薄情痞子
摘要

今天小编给大家分享一下js怎么根据文件夹目录获取JSON数据输出demo的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.搭

今天小编给大家分享一下js怎么根据文件夹目录获取JSON数据输出demo的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

1.搭建初始样式(html,CSS)

<!DOCTYPE html><html><head><meta charset="utf-8"><title></title><style>h3 {text-align: center;}#file_input {display: none;}.userBtn {padding: 6px 25px;background: #00bfff;border-radius: 4px;color: white;cursor: pointer;border: none;}.userBtn:active {background-color: #00bfff90;}.userBtn[disabled] {background: #00bfff60;cursor: not-allowed;}#dataShowArea {width: 100%;height: 600px;border: 1px solid #000;box-sizing: border-box;margin-top: 20px;overflow: hidden;padding: 20px;padding-top: 10px;background: #0cff0014;border-radius: 6px;display: flex;flex-wrap: wrap;flex-direction: column;}#dataShowArea #realityArea {width: 100%;flex: 1;overflow: overlay;box-sizing: border-box;margin: 0px;color: #3300ed;border-radius: 6px;}#dataShowArea #realityArea::-WEBkit-scrollbar {display: none;}#dataShowArea .hintUser{width: 100%;color: #3300ed;text-align: center;font-style: italic;margin-bottom: 10px;}.userBtnArea{width: 100%;display: flex;align-items: center;justify-content: space-around;}</style></head><body><h3>文件夹路径生成json文件</h3><div class="userBtnArea"><button id="coverInput" class="userBtn" onclick="coverInputClick()">选择文件夹</button><button id="saveJson" class="userBtn" onclick="saveJsonFile()" disabled>输出JSON文件</button></div><!-- 选取单个文件夹 --><input type="file" id="file_input" webkitdirectory directory onchange="outputFile(this.files)" /><!-- 存放加载文件的数据的区域 --><div id="dataShowArea"><div class="hintUser">数据预览</div><pre id="realityArea" class="hljs"></pre></div><script>//全局的文件 json 数据let filesData = '';let obj = document.getElementById('realityArea');let saveJsonBtn = document.getElementById('saveJson');</script></body></html>

2.文件夹目录转换成JSON数据

//File 文件格式需要转成 Object => 将字段提出方便装换const fileField = [    'lastModified',    'lastModifiedDate',    'name',    'size',    'type',    'webkitRelativePath',];//文件 目录数据生成async function handleFiles(files) {    if (files.length > 0) {        let catalogue = {            // childer:{}        };        for (fileItem of files) {            //获取要插入的对象 => File类型不能直接插入,会报错 => File类型不归属于Object类型            let fileData = {};            fileField.forEach((item) => {                fileData[item] = eval(`fileItem.${item}.toString()`);            });            //文件的name值为  xx.文件属性  会在执行插入语句时报错,只拿文件名,不拿文件属性            fileData.noTypeName = fileData.name.split('.')[0];            let fileData_ = JSON.stringify(fileData);            //获取树的每个字段            let catalogueField = fileItem.webkitRelativePath.split('/');            //要执行的js语句拼接            let objStr = catalogueField.reduce((pre, cur, index, arr) => {                                if (index >= arr.length - 1) {                    !eval(pre) && eval(`${pre}={isLeaf:true}`);                    pre = `${pre}['${fileData.noTypeName}']`;                } else {                    index == 0 ? (pre = `${pre}['${cur}']`) : (pre = `${pre}.Folder['${cur}']`);                    !eval(pre) && eval(`${pre}={isLeaf:false,type:'folder',Folder:{}}`);                }                return pre;            }, 'catalogue');            eval(`${objStr}={isLeaf:true,...${fileData_}}`);        }        return catalogue;    }}

3.JSON数据输出成JSON文件

//写成json文件输出function saveToJson(data) {    if (!data) {        console.error('json文件的数据对象不存在');        return;    }    var content = JSON.stringify(data, null, '\t');    // 转成blob数据对象    var blob = new Blob([content], {        type: 'text/plain;charset=utf-8',    });    //第二步 => 文件数据 转为可以 下载 的地址路径 改路径指向文件数据    let url = window.URL.createObjectURL(blob);    //动态创建a标签 => 模拟触发a标签的下载 => 用于将生成的json数据下载到本地    let link = document.createElement('a');    link.style.display = 'none';    link.href = url;    link.setAttribute('download', 'model.json');    document.body.appendChild(link);    link.click();    document.body.removeChild(link);    //URL.createObjectURL函数创建的数据不会再内存删除 得手动删除或者浏览器转态退出    window.URL.revokeObjectURL(url);}

4.完整代码

<!DOCTYPE html><html><head><meta charset="utf-8"><title></title><style>h3 {text-align: center;}#file_input {display: none;}.userBtn {padding: 6px 25px;background: #00bfff;border-radius: 4px;color: white;cursor: pointer;border: none;}.userBtn:active {background-color: #00bfff90;}.userBtn[disabled] {background: #00bfff60;cursor: not-allowed;}#dataShowArea {width: 100%;height: 600px;border: 1px solid #000;box-sizing: border-box;margin-top: 20px;overflow: hidden;padding: 20px;padding-top: 10px;background: #0cff0014;border-radius: 6px;display: flex;flex-wrap: wrap;flex-direction: column;}#dataShowArea #realityArea {width: 100%;flex: 1;overflow: overlay;box-sizing: border-box;margin: 0px;color: #3300ed;border-radius: 6px;}#dataShowArea #realityArea::-webkit-scrollbar {display: none;}#dataShowArea .hintUser{width: 100%;color: #3300ed;text-align: center;font-style: italic;margin-bottom: 10px;}.userBtnArea{width: 100%;display: flex;align-items: center;justify-content: space-around;}</style></head><body><h3>文件夹路径生成json文件</h3><div class="userBtnArea"><button id="coverInput" class="userBtn" onclick="coverInputClick()">选择文件夹</button><button id="saveJson" class="userBtn" onclick="saveJsonFile()" disabled>输出JSON文件</button></div><!-- 选取单个文件 --><!-- <input type="file" id="file" onchange="handleFiles(this.files)" /> --><!-- 选取多个文件 --><!-- <input type="file" id="file_input" multiple="multiple" onchange="handleFiles(this.files)" /> --><!-- 选取单个文件夹 --><input type="file" id="file_input" webkitdirectory directory onchange="outputFile(this.files)" /><!-- 存放加载文件的数据的区域 --><div id="dataShowArea"><div class="hintUser">数据预览</div><pre id="realityArea" class="hljs"></pre></div><script>//全局的文件 json 数据let filesData = '';let obj = document.getElementById('realityArea');let saveJsonBtn = document.getElementById('saveJson');//按钮点击触发input标签的点击function coverInputClick() {document.getElementById('file_input').click();}//报错json文件function saveJsonFile(data) {saveToJson(filesData);}//File 文件格式需要转成 Object => 将字段提出方便装换const fileField = ['lastModified','lastModifiedDate','name','size','type','webkitRelativePath',];//文件 目录数据生成async function handleFiles(files) {if (files.length > 0) {let catalogue = {// childer:{}};for (fileItem of files) {//获取要插入的对象 => File类型不能直接插入,会报错 => File类型不归属于Object类型let fileData = {};fileField.forEach((item) => {fileData[item] = eval(`fileItem.${item}.toString()`);});//文件的name值为  xx.文件属性  会在执行插入语句时报错,只拿文件名,不拿文件属性fileData.noTypeName = fileData.name.split('.')[0];let fileData_ = JSON.stringify(fileData);//获取树的每个字段let catalogueField = fileItem.webkitRelativePath.split('/');//要执行的js语句拼接let objStr = catalogueField.reduce((pre, cur, index, arr) => {if (index >= arr.length - 1) {!eval(pre) && (eval(`${pre}={isLeaf:true}`))pre = `${pre}['${fileData.noTypeName}']`;} else {index == 0 ? pre = `${pre}['${cur}']` : pre = `${pre}.Folder['${cur}']`;!eval(pre) && (eval(`${pre}={isLeaf:false,type:'folder',Folder:{}}`))}// !eval(pre) && (eval(`${pre}={isLeaf:false}`))return pre;}, 'catalogue');eval(`${objStr}={isLeaf:true,...${fileData_}}`);};return catalogue;}}//写成json文件输出function saveToJson(data) {if (!data) {console.error("json文件的数据对象不存在");return;}var content = JSON.stringify(data, null, '\t');// 转成blob数据对象var blob = new Blob([content], {type: "text/plain;charset=utf-8"});//第二步 => 文件数据 转为可以 下载 的地址路径 改路径指向文件数据let url = window.URL.createObjectURL(blob);//这里你会看到类似的地址:blob:Http://localhost:8080/d2dbbe3f-7466-415b-a2d0-387cff290acbconsole.log(url);//动态创建a标签 => 模拟触发a标签的下载 => 用于将生成的json数据下载到本地let link = document.createElement('a');link.style.display = "none";link.href = url;link.setAttribute('download', 'model.json');document.body.appendChild(link);link.click();document.body.removeChild(link);window.URL.revokeObjectURL(url);}function outputFile(files) {filesData = '';btnDisabled(saveJsonBtn);handleFiles(files).then(res => {filesData = res;btnCanClick(saveJsonBtn)obj.innerText = JSON.stringify(res, null, 2);}).catch(err => {console.error(err)})}function btnCanClick(btnObj) {btnObj.removeAttribute('disabled');}function btnDisabled(btnObj) {btnObj.setAttribute('disabled', 'disabled');}</script></body></html>

预览

Js怎么根据文件夹目录获取Json数据输出demo

以上就是“Js怎么根据文件夹目录获取Json数据输出demo”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: Js怎么根据文件夹目录获取Json数据输出demo

本文链接: https://www.lsjlt.com/news/353769.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Js怎么根据文件夹目录获取Json数据输出demo
    今天小编给大家分享一下Js怎么根据文件夹目录获取Json数据输出demo的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.搭...
    99+
    2023-07-05
  • json怎么根据字符串获取整条数据
    使用`json.loads()`函数将字符串解析为json对象,然后可以通过键值对的方式获取整条数据。以下是一个示例:```pyth...
    99+
    2023-10-10
    json
  • java怎么根据url获取文件流
    Java可以使用`java.net.URL`类来打开一个URL连接,并获取该URL对应的输入流。以下是一个简单的示例代码:```ja...
    99+
    2023-10-11
    java
  • Nodejs读取本地json文件,输出json数据接口方式
    目录Nodejs读取本地json文件,输出json数据接口第一步:准备本地JSON文件第二步:编写nodejs服务程序第三步: 测试请求接口数据nodejs读取本地json文件中文乱...
    99+
    2022-11-13
    Nodejs读取json文件 读取本地json文件 输出json数据
  • JS怎么根据条件取出数组中对应项
    这篇“JS怎么根据条件取出数组中对应项”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JS怎么根据条件取出数组中对应项”文章吧...
    99+
    2023-07-05
  • shell如何获取目录下所有文件夹的名称并输出的实例
    这篇文章将为大家详细讲解有关shell如何获取目录下所有文件夹的名称并输出的实例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。获取指定目录/usr/下所有文件夹的名称并输出:shell代码:#!/bin/...
    99+
    2023-06-09
  • Vue怎么通过json文件读取数据
    本篇内容介绍了“Vue怎么通过json文件读取数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.准备工作1.1 webpack.dev....
    99+
    2023-07-04
  • VBS中怎么获取当前目录下所有文件夹名字
    VBS中怎么获取当前目录下所有文件夹名字,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。VBS获取当前目录下所有文件夹名字,不包括子文件夹。我要给每个文件夹进行操作,所以最好用循...
    99+
    2023-06-08
  • vbs 中怎么获取当前目录的文件数量
    这篇文章将为大家详细讲解有关vbs 中怎么获取当前目录的文件数量,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。i=0set fso=CreateObject("Scrip...
    99+
    2023-06-08
  • C#怎么获取指定目录下某种格式文件集并备份到指定文件夹
    这篇文章主要介绍“C#怎么获取指定目录下某种格式文件集并备份到指定文件夹”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C#怎么获取指定目录下某种格式文件集并备份到指定文件夹”文章能帮助大家解决问题。...
    99+
    2023-06-30
  • 怎么将文件夹数据打包传输到云服务器
    要将文件夹数据打包传输到云服务器,可以按照以下步骤进行操作:1. 打开命令提示符(Windows)或终端(Mac/Linux)。2....
    99+
    2023-08-09
    云服务器
  • 怎么根据当前目录下的文件生成网址列表的bat
    本篇内容介绍了“怎么根据当前目录下的文件生成网址列表的bat”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!功能要求:  例如当面目...
    99+
    2023-06-08
  • MySQL中怎么更改数据文件目录位置
    这期内容当中小编将会给大家带来有关MySQL中怎么更改数据文件目录位置,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 1、停止mysqld servi...
    99+
    2024-04-02
  • 云服务器数据备份到本地文件夹怎么弄出来
    打开云服务器的控制台,并登录您的云账户。 在控制台中选择“数据库”选项,然后选择您要备份的数据库。 在弹出的窗口中,选择“备份”选项。 在弹出的备份窗口中,选择您要备份的文件夹和备份文件夹路径。 点击“备份”按钮开始备份数据。 备份完成后...
    99+
    2023-10-28
    数据备份 文件夹 怎么弄
  • oracle rac错误创建数据文件至本地目录怎么处理
    本篇内容主要讲解“oracle rac错误创建数据文件至本地目录怎么处理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“oracle rac错误创建数据文件至本地...
    99+
    2024-04-02
  • 怎么使用C语言将数字和字符等数据写入并输出到文本文件中
    这篇文章主要介绍“怎么使用C语言将数字和字符等数据写入并输出到文本文件中”,在日常操作中,相信很多人在怎么使用C语言将数字和字符等数据写入并输出到文本文件中问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作