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
相关文章
|
1天前
|
安全 JavaScript Java
springboot实现文件防盗链设计
`shigen`,一位专注于Java、Python、Vue和Shell的博主,分享成长和技术。近期将探讨SpringBoot实现图片防盗链,通过限制`Referer`防止资源被盗用。基础版通过`WebMvcConfigurer`配置静态资源,升级版添加拦截器检查`Referer`,确保请求来源合法性。详细代码实现和案例可在文中链接找到。一起学习,每天进步!
39 13
springboot实现文件防盗链设计
|
3天前
|
JSON JavaScript 前端开发
vue的 blob文件下载文件时,后端自定义异常,并返回json错误提示信息,前端捕获信息并展示给用户
vue的 blob文件下载文件时,后端自定义异常,并返回json错误提示信息,前端捕获信息并展示给用户
|
4天前
|
JSON Java 数据格式
nbcio-boot升级springboot、mybatis-plus和JSQLParser后的LocalDateTime日期json问题
nbcio-boot升级springboot、mybatis-plus和JSQLParser后的LocalDateTime日期json问题
|
12天前
|
JSON JavaScript Java
从前端Vue到后端Spring Boot:接收JSON数据的正确姿势
从前端Vue到后端Spring Boot:接收JSON数据的正确姿势
22 0
|
15天前
|
前端开发
【专栏】在前端开发中,package.json 文件是项目的重要配置文件,其中包含了许多与项目相关的信息和设置
【4月更文挑战第29天】`package.json`的`proxy`字段用于配置开发环境中的代理服务器,解决跨域问题并模拟后端响应。它是字符串类型,值为代理服务器地址。主要应用场景包括前端跨域请求和本地调试。配置时在`package.json`顶层添加`proxy`字段,如`"proxy": "http://localhost:8080"`。该配置仅在开发环境中生效,生产环境需另寻解决方案。
|
15天前
|
JSON Java 数据处理
Spring Boot与Jsonson对象:灵活的JSON操作实战
【4月更文挑战第28天】在现代Web应用开发中,JSON数据格式的处理至关重要。假设 "Jsonson" 代表一个类似于Jackson的库,这样的工具在Spring Boot中用于处理JSON。本篇博客将介绍Spring Boot中处理JSON数据的基本概念,并通过实际例子展示如何使用类似Jackson的工具进行数据处理。
25 0
|
15天前
|
运维 JavaScript Java
Serverless 应用引擎产品使用之阿里云Serverless函数计算中,在Node.js环境中执行jar文件如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
21 0
|
16天前
|
JSON fastjson Java
|
18天前
|
Java 数据安全/隐私保护 开发者
【SpringBoot】讲清楚日志文件&&lombok
【SpringBoot】讲清楚日志文件&&lombok
22 5
|
18天前
|
JSON 关系型数据库 MySQL
node笔记_读取目录的文件
node笔记_读取目录的文件
16 1