SpringBoot-13-插曲之Node文件重命名+自动生成json对象

简介: 遇到的问题:图片太多,使用起来挺麻烦[1]有很多图片放服务器里,怎么能更好的管理,更方便拿到图片呢?[2]想用json 以一个对象数组的形式保存这些图片:以[{img:"图片名"},{img:"图片名"}....]形式[3]虽说想法是很好,但不可能一条一条自己写吧,好歹咱也是21世纪敲代码的人。

遇到的问题:图片太多,使用起来挺麻烦

[1]有很多图片放服务器里,怎么能更好的管理,更方便拿到图片呢?
[2]想用json 以一个对象数组的形式保存这些图片:以[{img:"图片名"},{img:"图片名"}....]形式
[3]虽说想法是很好,但不可能一条一条自己写吧,好歹咱也是21世纪敲代码的人。
[4]刚好最近学了点node,就拿来小试牛刀。
图片
const fs = require('fs');
const path = require('path');

let result = read('F:/SpringBootFiles/Image');
function read(pathName) {
    let objs = [];
    //读取路径,返回所有文件节点=文件夹+文件
    let filePath = "F:/SpringBootFiles/Image/img.json";//输出路径
    fs.readdir(pathName, (err, files) => {//读文件夹
        for (let file of files) {//遍历文件
            let oldName = path.join('F:/SpringBootFiles/Image', file);//文件旧路径
            let extname = path.extname(file);//文件后缀名
            let basename = path.basename(file,extname);//文件名除去后缀(这里没有到,提一下)
            let newName = rangeChar(16, true) + extname;//新名称,随机获取16个字符
            fs.rename(oldName, path.join('F:/SpringBootFiles/Image', newName), err => {});//重命名

            let obj = {};//定义对象
            obj.img = newName;//该对象img属性为新文件名称
            objs.push(obj);//将对象添到数组中
        }

        fs.writeFileSync(filePath, JSON.stringify(objs), {encoding: 'utf8'})//写入数据
    });

一开始想把乱七八糟的名字都给弄的整齐点,打算用时间戳,但程序跑太快,重名文件就给覆盖了,没办法,写两个函数随机生成任意字符串吧,16个任意大小写字母de组合应该差不多了。这两个函数还挺好用,生成随机字符串。

    function rangeChar(len, hasBig = false) {
        let allLen = 25;
        let chars = ["a", "b", "c", "d", "e", "f", "g",
            "h", "i", "j", "k", "l", "m", "n",
            "o", "p", "q", "r", "s", "t",
            "u", "v", "w", "x", "y", "z"];
        let charsBig = chars.map(item => item.toUpperCase());

        if (hasBig) {
            chars = chars.concat(charsBig);
            allLen = 49;
        }
        let result = [];
        for (let i = 0; i < len; i++) {
            let char = chars[rangeInt(0, allLen)];
            result.push(char);
        }
        return result.join('');
    };

    function rangeInt(s, e) {
        let max = Math.max(s, e);
        let min = Math.min(s, e) - 1;
        return min + Math.ceil(Math.random() * (max - min));
    };

我的springboot已经将访问路径定位到F:/SpringBootFiles/Image文件夹下,访问是成功的,有了json,有了图片名,Ajax拿到数据,加上域名就能用了,不管有几千张,几万张图片,执行一下命令,轻松搞定。

json数据.png
拿到图片路径.png
相关文章
|
4天前
|
JSON Java 数据格式
Spring Boot返回Json数据及数据封装
在Spring Boot中,接口间及前后端的数据传输通常使用JSON格式。通过@RestController注解,可轻松实现Controller返回JSON数据。该注解是Spring Boot新增的组合注解,结合了@Controller和@ResponseBody的功能,默认将返回值转换为JSON格式。Spring Boot底层默认采用Jackson作为JSON解析框架,并通过spring-boot-starter-json依赖集成了相关库,包括jackson-databind、jackson-datatype-jdk8等常用模块,简化了开发者对依赖的手动管理。
29 3
|
28天前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
Spring boot 使用mybatis generator 自动生成代码插件
|
4月前
|
JSON Java 数据格式
微服务——SpringBoot使用归纳——Spring Boot返回Json数据及数据封装——封装统一返回的数据结构
本文介绍了在Spring Boot中封装统一返回的数据结构的方法。通过定义一个泛型类`JsonResult&lt;T&gt;`,包含数据、状态码和提示信息三个属性,满足不同场景下的JSON返回需求。例如,无数据返回时可设置默认状态码&quot;0&quot;和消息&quot;操作成功!&quot;,有数据返回时也可自定义状态码和消息。同时,文章展示了如何在Controller中使用该结构,通过具体示例(如用户信息、列表和Map)说明其灵活性与便捷性。最后总结了Spring Boot中JSON数据返回的配置与实际项目中的应用技巧。
247 0
|
4月前
|
JSON Java fastjson
微服务——SpringBoot使用归纳——Spring Boot返回Json数据及数据封装——使用 fastJson 处理 null
本文介绍如何使用 fastJson 处理 null 值。与 Jackson 不同,fastJson 需要通过继承 `WebMvcConfigurationSupport` 类并覆盖 `configureMessageConverters` 方法来配置 null 值的处理方式。例如,可将 String 类型的 null 转为 &quot;&quot;,Number 类型的 null 转为 0,避免循环引用等。代码示例展示了具体实现步骤,包括引入相关依赖、设置序列化特性及解决中文乱码问题。
128 0
|
4月前
|
JSON Java fastjson
微服务——SpringBoot使用归纳——Spring Boot返回Json数据及数据封装——Spring Boot 默认对Json的处理
本文介绍了在Spring Boot中返回Json数据的方法及数据封装技巧。通过使用`@RestController`注解,可以轻松实现接口返回Json格式的数据,默认使用的Json解析框架是Jackson。文章详细讲解了如何处理不同数据类型(如类对象、List、Map)的Json转换,并提供了自定义配置以应对null值问题。此外,还对比了Jackson与阿里巴巴FastJson的特点,以及如何在项目中引入和配置FastJson,解决null值转换和中文乱码等问题。
358 0
|
1月前
|
JSON IDE Java
鸿蒙开发:json转对象插件回来了
首先,我重新编译了插件,进行了上传,大家可以下载最新的安装包进行体验了,还是和以前一样,提供了在线版和IDE插件版,两个选择,最新的版本,除了升级了版本,兼容了最新的DevEco Studio ,还做了一层优化,就是针对嵌套对象和属性的生成,使用方式呢,一年前的文章中有过详细的概述,这里呢也简单介绍一下。
鸿蒙开发:json转对象插件回来了
|
3月前
|
XML JSON API
如何在 Postman 中上传文件和 JSON 数据
如果你想在 Postman 中同时上传文件和 JSON 数据,本文将带你一步一步地了解整个过程,包括最佳实践和技巧,让你的工作更轻松。
|
5月前
|
开发工具 git 索引
怎么取消对project.private.config.json这个文件的git记录
通过以上步骤,您可以成功取消对 `project.private.config.json`文件的Git记录。这样,文件将不会被包含在未来的提交中,同时仍保留在您的工作区中。
150 28
|
4月前
|
JSON Java 数据格式
微服务——SpringBoot使用归纳——Spring Boot中的全局异常处理——定义返回的统一 json 结构
本课主要讲解Spring Boot中的全局异常处理方法。在项目开发中,各层操作难免会遇到各种异常,若逐一处理将导致代码耦合度高、维护困难。因此,需将异常处理从业务逻辑中分离,实现统一管理与友好反馈。本文通过定义一个简化的JsonResult类(含状态码code和消息msg),结合全局异常拦截器,展示如何封装并返回标准化的JSON响应,从而提升代码质量和用户体验。
80 0
|
8月前
|
JSON Java 数据格式
springboot中表字段映射中设置JSON格式字段映射
springboot中表字段映射中设置JSON格式字段映射
268 1