sql审计平台部署
其它数据库管理平台:Orchestrator部署
包链接:https://github.com/hhyo/Archery/tree/master
部署链接:https://github.com/hhyo/Archery/wiki
获取链接地址:下载包

[root@mcw01 opt]# ls
Archery-master containerd hadoop jdk-8u191-linux-x64.tar.gz master.zip
[root@mcw01 opt]# wget https://github.com/hhyo/Archery/archive/refs/heads/master.zip
此时已经安装了docker的。没有docker-compose. ,安装参考:https://www.cnblogs.com/machangwei-8/p/16864532.html
下载 Releases文件,解压后进入docker-compose文件夹 如果网络受限可访问码云地址: gitee
打开 docker-compose.yml 在 service.archery.image 区域确认你所需要的镜像版本,如果你使用私有镜像,此处应填私有镜像地址
#启动
docker compose -f docker-compose.yml up -d #表结构初始化
docker exec -ti archery /bin/bash
cd /opt/archery
source /opt/venv4archery/bin/activate
python3 manage.py makemigrations sql
python3 manage.py migrate #数据初始化
python3 manage.py dbshell<sql/fixtures/auth_group.sql
python3 manage.py dbshell<src/init_sql/mysql_slow_query_review.sql #创建管理用户
python3 manage.py createsuperuser #重启服务
docker restart archery #日志查看和问题排查
docker logs archery -f --tail=10
logs/archery.log
部署报错:
[root@mcw01 docker-compose]# docker compose -f docker-compose.yml up -d
[+] Running 2/3
⠿ Container goinception Running 0.0s
⠿ Container redis Running 0.0s
⠋ Container mysql Starting 0.1s
Error response from daemon: driver failed programming external connectivity on endpoint mysql (4bcc6a829b8af0baed8a4670f18f24c3c1eabe4a7957eacca56ff7636fad5839): Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use
[root@mcw01 docker-compose]#
部署需要拉取这四个镜像
[root@mcw01 docker-compose]# docker compose -f docker-compose.yml up -d
[+] Running 2/3
⠿ Container goinception Running 0.0s
⠿ Container redis Running 0.0s
⠋ Container mysql Starting 0.1s
Error response from daemon: driver failed programming external connectivity on endpoint mysql (4bcc6a829b8af0baed8a4670f18f24c3c1eabe4a7957eacca56ff7636fad5839): Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use
[root@mcw01 docker-compose]#
停掉当前不用的数据库
systemctl stop mysqld
#启动
[root@mcw01 docker-compose]# docker compose -f docker-compose.yml up -d
[+] Running 4/4
⠿ Container goinception Running 0.0s
⠿ Container redis Healthy 1.4s
⠿ Container mysql Healthy 12.0s
⠿ Container archery Started 2.0s
[root@mcw01 docker-compose]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7ce2c1570022 hhyo/archery:v1.10.0 "bash /opt/archery/s…" 9 hours ago Up 18 seconds 0.0.0.0:9123->9123/tcp, :::9123->9123/tcp archery
e47d0665abdc redis:5 "docker-entrypoint.s…" 9 hours ago Up 9 hours (healthy) 6379/tcp redis
11b701c9a8d8 hanchuanchuan/goinception "/usr/local/bin/dumb…" 9 hours ago Up 9 hours 0.0.0.0:4000->4000/tcp, :::4000->4000/tcp goinception
22e12659e764 mysql:5.7 "docker-entrypoint.s…" 9 hours ago Up 31 seconds (healthy) 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
[root@mcw01 docker-compose]#
#表结构初始化
[root@mcw01 docker-compose]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7ce2c1570022 hhyo/archery:v1.10.0 "bash /opt/archery/s…" 9 hours ago Up 18 seconds 0.0.0.0:9123->9123/tcp, :::9123->9123/tcp archery
e47d0665abdc redis:5 "docker-entrypoint.s…" 9 hours ago Up 9 hours (healthy) 6379/tcp redis
11b701c9a8d8 hanchuanchuan/goinception "/usr/local/bin/dumb…" 9 hours ago Up 9 hours 0.0.0.0:4000->4000/tcp, :::4000->4000/tcp goinception
22e12659e764 mysql:5.7 "docker-entrypoint.s…" 9 hours ago Up 31 seconds (healthy) 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
[root@mcw01 docker-compose]#
[root@mcw01 docker-compose]# docker exec -ti archery /bin/bash
[root@7ce2c1570022 archery]# cd /opt/archery
[root@7ce2c1570022 archery]# ls
admin.sh CODE_OF_CONDUCT.md CONTRIBUTING.md docs keys local_settings.py manage.py media README.md sql src static supervisord.pid
archery common debug.sh downloads LICENSE logs masking.sh __pycache__ requirements.txt sql_api startup.sh supervisord.conf
[root@7ce2c1570022 archery]# ls ..
archery microsoft venv4archery
[root@7ce2c1570022 archery]# ls /opt/
archery microsoft venv4archery
[root@7ce2c1570022 archery]# ls bin
ls: cannot access bin: No such file or directory
[root@7ce2c1570022 archery]# ls /opt/venv4archery/
bin cx_Oracle-doc include lib pyvenv.cfg share
[root@7ce2c1570022 archery]# ls /opt/venv4archery/bin/
activate activate.nu django-admin f2py3 geomet jsonschema pasteurize pip3 __pycache__ python qr sshtunnel tqdm wheel-3.9
activate.csh activate.ps1 echo_supervisord_conf f2py3.9 gunicorn jws pidproxy pip-3.9 pyodps-pack python3 schemasync supervisorctl wheel wheel3.9
activate.fish activate_this.py f2py futurize jp.py normalizer pip pip3.9 pyou python3.9 sqlformat supervisord wheel3
[root@7ce2c1570022 archery]#
[root@7ce2c1570022 archery]#
[root@7ce2c1570022 archery]# source /opt/venv4archery/bin/activate
(venv4archery) [root@7ce2c1570022 archery]# which python3
/opt/venv4archery/bin/python3
(venv4archery) [root@7ce2c1570022 archery]# which python
/opt/venv4archery/bin/python
(venv4archery) [root@7ce2c1570022 archery]# python3 manage.py makemigrations sql
2023-12-30 19:04:00,793 - environ.environ - INFO - /opt/archery/.env not found - if you're not configuring your environment separately, check this.
Migrations for 'sql':
sql/migrations/0001_initial.py
- Create model SlowQuery
- Create model SlowQueryHistory
- Create model ArchiveConfig
- Create model AuditEntry
- Create model CloudAccessKey
- Create model Config
- Create model DataMaskingRules
- Create model Instance
- Create model InstanceTag
- Create model Permission
- Create model QueryLog
- Create model ResourceGroup
- Create model SqlWorkflow
- Create model Tunnel
- Create model WorkflowAuditDetail
- Create model WorkflowLog
- Create model WorkflowAuditSetting
- Create model WorkflowAudit
- Create model SqlWorkflowContent
- Create model QueryPrivilegesApply
- Create model ParamTemplate
- Create model ParamHistory
- Add field instance_tag to instance
- Add field resource_group to instance
- Add field tunnel to instance
- Create model DataMaskingColumns
- Create model ArchiveLog
- Add field dest_instance to archiveconfig
- Add field resource_group to archiveconfig
- Add field src_instance to archiveconfig
- Create model AliyunRdsConfig
- Create model Users
- Create model TwoFactorAuthConfig
- Create model QueryPrivileges
- Create model InstanceDatabase
- Create model InstanceAccount
(venv4archery) [root@7ce2c1570022 archery]# python3 manage.py migrate
2023-12-30 19:05:09,615 - environ.environ - INFO - /opt/archery/.env not found - if you're not configuring your environment separately, check this.
Operations to perform:
Apply all migrations: admin, auth, contenttypes, django_q, sessions, sql
Running migrations:
Applying contenttypes.0001_initial... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0001_initial... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying sql.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying django_q.0001_initial... OK
Applying django_q.0002_auto_20150630_1624... OK
Applying django_q.0003_auto_20150708_1326... OK
Applying django_q.0004_auto_20150710_1043... OK
Applying django_q.0005_auto_20150718_1506... OK
Applying django_q.0006_auto_20150805_1817... OK
Applying django_q.0007_ormq... OK
Applying django_q.0008_auto_20160224_1026... OK
Applying django_q.0009_auto_20171009_0915... OK
Applying django_q.0010_auto_20200610_0856... OK
Applying django_q.0011_auto_20200628_1055... OK
Applying django_q.0012_auto_20200702_1608... OK
Applying django_q.0013_task_attempt_count... OK
Applying django_q.0014_schedule_cluster... OK
Applying sessions.0001_initial... OK
(venv4archery) [root@7ce2c1570022 archery]#
#数据初始化
(venv4archery) [root@7ce2c1570022 archery]# ls
admin.sh CODE_OF_CONDUCT.md CONTRIBUTING.md docs keys local_settings.py manage.py media README.md sql src static supervisord.pid
archery common debug.sh downloads LICENSE logs masking.sh __pycache__ requirements.txt sql_api startup.sh supervisord.conf
(venv4archery) [root@7ce2c1570022 archery]# ls sql
admin.py binlog.py engines __init__.py instance.py models.py __pycache__ resource_group.py sql_optimize.py static tests.py utils
archiver.py data_dictionary.py fixtures instance_account.py locale notify.py query_privileges.py slowlog.py sql_tuning.py templates urls.py views.py
audit_log.py db_diagnostic.py form.py instance_database.py migrations plugins query.py sql_analyze.py sql_workflow.py templatetags user.py
(venv4archery) [root@7ce2c1570022 archery]# ls sql/fixtures/
auth_group.sql
(venv4archery) [root@7ce2c1570022 archery]# ls src/
charts docker docker-compose init_sql plugins script
(venv4archery) [root@7ce2c1570022 archery]# ls src/init_sql/
del_permissions.sql v1.0_init.sql v1.2.0_v1.3.0.sql v1.4.2_v1.4.3.sql v1.5.3_v1.6.0.sql v1.6.5_v1.6.6.sql v1.7.10_v1.7.11.sql v1.7.4_v1.7.5.sql v1.8.4.sql
goinception_param_template.sql v1.0_v1.1.0.sql v1.3.0_v1.3.2.sql v1.4.3_v1.4.5.sql v1.6.0_v1.6.1.sql v1.6.6_v1.6.7.sql v1.7.11_v1.7.12.sql v1.7.6_v1.7.7.sql v1.9.0.sql
mysql_slow_query_review.sql v1.10.0.sql v1.3.6_v1.3.7.sql v1.4.5_v1.5.0.sql v1.6.1_v1.6.2.sql v1.6.7_v1.7.0.sql v1.7.1_v1.7.2.sql v1.7.7_v1.7.8.sql
rds_param_template.sql v1.1.0_v1.2.0.sql v1.3.8_v1.4.0.sql v1.5.3_comment.sql v1.6.2_v1.6.3.sql v1.7.0_v1.7.1.sql v1.7.2_v1.7.3.sql v1.8.3.sql
(venv4archery) [root@7ce2c1570022 archery]# ls src/init_sql/mysql_slow_query_review.sql
src/init_sql/mysql_slow_query_review.sql
(venv4archery) [root@7ce2c1570022 archery]#
(venv4archery) [root@7ce2c1570022 archery]#
(venv4archery) [root@7ce2c1570022 archery]# python3 manage.py dbshell<sql/fixtures/auth_group.sql
2023-12-30 19:07:55,192 - environ.environ - INFO - /opt/archery/.env not found - if you're not configuring your environment separately, check this.
(venv4archery) [root@7ce2c1570022 archery]# python3 manage.py dbshell<src/init_sql/mysql_slow_query_review.sql
2023-12-30 19:08:15,485 - environ.environ - INFO - /opt/archery/.env not found - if you're not configuring your environment separately, check this.
(venv4archery) [root@7ce2c1570022 archery]#
#创建管理用户
(venv4archery) [root@7ce2c1570022 archery]# python3 manage.py createsuperuser
2023-12-30 19:25:52,474 - environ.environ - INFO - /opt/archery/.env not found - if you're not configuring your environment separately, check this.
用户名: machangwei
电子邮件地址: 89xxx15@qq.com
Password: 123456
Password (again):
密码长度太短。密码必须包含至少 9 个字符。
这个密码太常见了。
密码只包含数字。
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.
(venv4archery) [root@7ce2c1570022 archery]#
#重启服务
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.
(venv4archery) [root@7ce2c1570022 archery]# exit
exit
[root@mcw01 docker-compose]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7ce2c1570022 hhyo/archery:v1.10.0 "bash /opt/archery/s…" 9 hours ago Up 39 minutes 0.0.0.0:9123->9123/tcp, :::9123->9123/tcp archery
e47d0665abdc redis:5 "docker-entrypoint.s…" 9 hours ago Up 9 hours (healthy) 6379/tcp redis
11b701c9a8d8 hanchuanchuan/goinception "/usr/local/bin/dumb…" 9 hours ago Up 9 hours 0.0.0.0:4000->4000/tcp, :::4000->4000/tcp goinception
22e12659e764 mysql:5.7 "docker-entrypoint.s…" 9 hours ago Up 39 minutes (healthy) 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
[root@mcw01 docker-compose]#
[root@mcw01 docker-compose]#
[root@mcw01 docker-compose]# docker restart archery
archery
[root@mcw01 docker-compose]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7ce2c1570022 hhyo/archery:v1.10.0 "bash /opt/archery/s…" 9 hours ago Up 10 seconds 0.0.0.0:9123->9123/tcp, :::9123->9123/tcp archery
e47d0665abdc redis:5 "docker-entrypoint.s…" 9 hours ago Up 9 hours (healthy) 6379/tcp redis
11b701c9a8d8 hanchuanchuan/goinception "/usr/local/bin/dumb…" 9 hours ago Up 9 hours 0.0.0.0:4000->4000/tcp, :::4000->4000/tcp goinception
22e12659e764 mysql:5.7 "docker-entrypoint.s…" 9 hours ago Up 40 minutes (healthy) 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
[root@mcw01 docker-compose]#
#日志查看和问题排查
[root@mcw01 docker-compose]# docker logs archery -f --tail=10
[2023-12-30 19:32:24 +0800] [17] [INFO] Listening at: http://127.0.0.1:8888 (17)
[2023-12-30 19:32:24 +0800] [17] [INFO] Using worker: sync
[2023-12-30 19:32:24 +0800] [18] [INFO] Booting worker with pid: 18
[2023-12-30 19:32:24 +0800] [19] [INFO] Booting worker with pid: 19
[2023-12-30 19:32:24 +0800] [20] [INFO] Booting worker with pid: 20
[2023-12-30 19:32:24 +0800] [21] [INFO] Booting worker with pid: 21
2023-12-30 19:32:26,203 - environ.environ - INFO - /opt/archery/.env not found - if you're not configuring your environment separately, check this.
2023-12-30 19:32:26,587 - environ.environ - INFO - /opt/archery/.env not found - if you're not configuring your environment separately, check this.
2023-12-30 19:32:26,654 - environ.environ - INFO - /opt/archery/.env not found - if you're not configuring your environment separately, check this.
2023-12-30 19:32:26,798 - environ.environ - INFO - /opt/archery/.env not found - if you're not configuring your environment separately, check this.
[root@mcw01 docker-compose]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7ce2c1570022 hhyo/archery:v1.10.0 "bash /opt/archery/s…" 10 hours ago Up 4 minutes 0.0.0.0:9123->9123/tcp, :::9123->9123/tcp archery
e47d0665abdc redis:5 "docker-entrypoint.s…" 10 hours ago Up 10 hours (healthy) 6379/tcp redis
11b701c9a8d8 hanchuanchuan/goinception "/usr/local/bin/dumb…" 10 hours ago Up 10 hours 0.0.0.0:4000->4000/tcp, :::4000->4000/tcp goinception
22e12659e764 mysql:5.7 "docker-entrypoint.s…" 10 hours ago Up 44 minutes (healthy) 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
[root@mcw01 docker-compose]#
[root@mcw01 docker-compose]# docker exec -ti archery /bin/bash
[root@7ce2c1570022 archery]# ls
admin.sh CODE_OF_CONDUCT.md CONTRIBUTING.md docs keys local_settings.py manage.py media README.md sql src static supervisord.pid
archery common debug.sh downloads LICENSE logs masking.sh __pycache__ requirements.txt sql_api startup.sh supervisord.conf
[root@7ce2c1570022 archery]# ls logs/
archery.log qcluster.log supervisord.log
[root@7ce2c1570022 archery]# cast logs/archery.log
bash: cast: command not found
[root@7ce2c1570022 archery]# cat logs/archery.log
[root@7ce2c1570022 archery]#
访问
[root@7ce2c1570022 archery]# ss -lntup|grep 9123
tcp LISTEN 0 128 *:9123 *:* users:(("nginx",pid=12,fd=7))
[root@7ce2c1570022 archery]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
18: eth0@if19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:12:00:05 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.18.0.5/16 brd 172.18.255.255 scope global eth0
valid_lft forever preferred_lft forever
[root@7ce2c1570022 archery]# exit
exit
[root@mcw01 docker-compose]# ss -lntup|grep 9123
tcp LISTEN 0 16384 *:9123 *:* users:(("docker-proxy",pid=119730,fd=4))
tcp LISTEN 0 16384 :::9123 :::* users:(("docker-proxy",pid=119734,fd=4))
[root@mcw01 docker-compose]# hostname -I
10.0.0.11 172.17.0.1 172.18.0.1
[root@mcw01 docker-compose]#
http://10.0.0.11:9123/

成功登录

sql审计平台部署的更多相关文章
- SQL审核平台Yearning部署
SQL审核平台Yearning部署 Yearning优势: Yearning SQL 审计平台 基于Vue.js与Django的整套mysql-sql审核平台解决方案.提供基于Inception的S ...
- SQL审计 Yearning 介绍(SQL审核平台)
yearning SQL 是一个成熟的SQL审计平台
- SQL审核平台-Yearning安装部署实践
相关文档: https://guide.yearning.io/ yearning简介 http://python.yearning.io/install/ yearning安装 Yearning ...
- Yearning 介绍(SQL审核平台)
介绍 Yearning SQL 审计平台 基于Vue.js与Django的整套mysql-sql审核平台解决方案.提供基于Inception的SQL检测及执行. GitHub:https://gith ...
- Cobar SQL审计的设计与实现
背景介绍 Cobar简介 Cobar 是阿里开源的一款数据库中间件产品. 在业务高速增长的情况下,数据库往往成为整个业务系统的瓶颈,数据库中间件的出现就是为了解决数据库瓶颈而产生的一种中间层产品. 在 ...
- Yearning v1.3.0 发布,Web 端 SQL 审核平台
企业级MYSQL web端 SQL审核平台. Website 官网 www.yearning.io Feature 功能 数据库字典自动生成 SQL查询 查询工单 导出 自动补全,智能提示 查询语句审 ...
- 基于Inception搭建MySQL SQL审核平台Yearing
基于Inception搭建MySQL SQL审核平台Yearing Inception 1. Inceptionj简介 2. Inception安装 2.1 下载和编译 2.2 启动配置 Yearni ...
- .NET Core开发的iNeuOS物联网平台部署树霉派,从网关到云端整体解决方案。助力2019中国.NET峰会。
2019 中国.NET 开发者峰会正式启动 目 录 1. 概述... 2 2. 树莓派硬件配置... 2 3. 软件信息... 3 4. Raspb ...
- .NET Core开发的iNeuOS物联网平台部署树霉派(raspbian),从网关到云端整体解决方案。助力2019中国.NET峰会。
2019 中国.NET 开发者峰会正式启动 目 录 1. 概述... 2 2. 树莓派硬件配置... 2 3. 软件信息... 3 4. Raspb ...
- 从零构建Flink SQL计算平台 - 1平台搭建
一.理想与现实 Apache Flink 是一个分布式流批一体化的开源平台.Flink 的核心是一个提供数据分发.通信以及自动容错的流计算引擎.Flink 在流计算之上构建批处理,并且原生的支持迭代计 ...
随机推荐
- AJAX 前端开发利器:实现网页动态更新的核心技术
AJAX AJAX是开发者的梦想,因为你可以: 在不重新加载页面的情况下更新网页 在页面加载后请求来自服务器的数据 在页面加载后接收来自服务器的数据 在后台向服务器发送数据 HTML页面 <!D ...
- C 语言运算符详解
C 语言中的运算符 运算符用于对变量和值进行操作. 在下面的示例中,我们使用 + 运算符将两个值相加: int myNum = 100 + 50; 虽然 + 运算符通常用于将两个值相加,就像上面的示例 ...
- SQL 日期处理和视图创建:常见数据类型、示例查询和防范 SQL 注入方法
SQL处理日期 在数据库操作中,处理日期是一个关键的方面.确保插入的日期格式与数据库中日期列的格式匹配至关重要.以下是一些常见的SQL日期数据类型和处理方法. SQL日期数据类型 MySQL日期数据类 ...
- 遵循这些MySQL设计规范,再也没被组长喷过
分享是最有效的学习方式. 博客:https://blog.ktdaddy.com/ 故事 会议室里,小猫挠着头,心里暗暗叫苦着"哎,这代码都撸完了呀,改起来成本也太大了." 原来就 ...
- Unity 音频资源优化
1.声道设置 (1).不设置 单声道 音频大小为下图 (2).设置单声道 音频大小为下图 2.加载类型 (1).Decompress On Load 使用内存8.1M (2).Compressed I ...
- [Java SE] 经典问题:超出Java Long型(8字节/64位)的二进制比特流数据如何进行大数的数值计算?
0 问题描述 经典问题:超出Java Long型(8字节/64位)的二进制比特流数据如何进行大数的数值计算? 近期工作上遇到了这个问题:需要将一个无符号数.且位长>=8字节(等于8字节时,首位b ...
- github 小技巧
前言 简单记一下github 小技巧,因为经常忘. 正文 就是如何快速搜索到自己想找的项目. 如果自己知道项目名,那么直接输入就可以搜索到. 如果不是,那么一般要通过高级搜索. https://git ...
- maven 创建spring boot 需要的配置[一]
前言 之所以写这个是因为现在官方推荐云创建: 所以标注一下maven project,创建后,如何导入spring boot. 正文 1.步骤一 在pom.xml 中加入: <dependenc ...
- 前端js解析识别图片二维码
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- 使用JSZip实现在浏览器中操作文件与文件夹
1. 引言 浏览器中如何创建文件夹.写入文件呢? 答曰:可以借助JSZip这个库来实现在浏览器内存中创建文件与文件夹,最后只需下载这个.zip文件,就是最终得结果 类似的使用场景如下: 在线下载很多图 ...