Python+Vue3+onlyoffice开发私有化文档管理系统实战笔记 20240731

之前进度

表字段设计如下:

js 复制代码
const columns = [
  {
    title: '名称',
    key: 'name',
    dataIndex: 'name',
  },
  {
    title: '类型',
    key: 'category',
    dataIndex: 'category',
  },
  {
    title: '作者',
    key: 'author',
    dataIndex: 'author',
  },
  {
    title: '路径',
    key: 'path',
    dataIndex: 'path',
  },
  {
    title: '最近访问时间',
    key: 'latest_view_time',
    dataIndex: 'latest_view_time',
  },
  {
    title: '大小',
    key: 'size',
    dataIndex: 'size',
  },
  {
    title: '操作',
    key: 'action',
  },
];

创建数据库

sql 复制代码
drop database if exists onlyoffice;
create database onlyoffice character set utf8mb4;

关于文档大小字段类型的讨论

如图:

MySQL中int类型的最大值是2147483647,经过计算,可以存储2048M的文件大小。

所以也就是能够存储2G的大小,对于文档类型的文件来说,超过2G是不被允许的,也不太可能,所以int类型够用了。

创建表格

python 复制代码
import env
import mcrud

env.load("../.env")

db = mcrud.new_env()

columns = [
    "name varchar(255)",
    "category varchar(255)",
    "author_id varchar(255)",
    "author varchar(255)",
    "path varchar(255)",
    "latest_view_time datetime",
    "size int",
]
db.add_table("file", columns)

onllyoffice支持的文档类型

word - 文本文档 (.doc、.docm、.docx、.docxf、.dot、.dotm、.dotx、.epub、.fb2、.fodt、.htm、.html、.mht、.mhtml、.odt、.ott、.rtf、.stw、.sxw、.txt、.wps、.wpt、.xml),

电子表格 (.csv、.et、.ett、.fods、.ods、.ots、.sxc、.xls、.xlsb、.xlsm、.xlsx、.xlt、.xltm、.xltx、.xml),

演示文稿 (.dps、.dpt、.fodp、.odp、.otp、.pot、.potm、.potx、.pps、.ppsm、.ppsx、.ppt、.pptm、.pptx、.sxi),

便携式文档格式 (.djvu、.docxf、.oform、.oxps、.pdf、.xps)。

构造点假数据

python 复制代码
import env
import mcrud
import rand
import snowflake
import random

env.load("../.env")

db = mcrud.new_env()

columns = [
    "id",
    "name",
    "category",
    "author_id",
    "author",
    "path",
    "latest_view_time",
    "size",
]
values = []
suffixs = {
    ".docx": "word",
    ".xlsx": "excel",
    ".ppt": "ppt",
}
for i in range(100):
    suffix = random.choice(list(suffixs.keys()))
    category = suffixs.get(suffix)
    filename = rand.str.str(6) + suffix
    view_time = (f"{rand.num.int(2022, 2024)}-"
                 f"{rand.num.int(1, 12):02d}-"
                 f"{rand.num.int(1, 28):02d} "
                 f"{rand.num.int(0, 23):02d}:"
                 f"{rand.num.int(0, 59):02d}:"
                 f"{rand.num.int(0, 59):02d}")
    values.append([
        snowflake.idstr(),
        filename,
        category,
        snowflake.idstr(),
        rand.user.name(),
        f"{rand.str.str(6)}/{rand.str.str(6)}/{filename}",
        view_time,
        rand.num.int(100, 100000),
    ])

db.add_many("file", columns, values)

后续计划

  • 1、最近文档表格完善
  • 2、实现登录功能
  • 3、新建文件,复制文件,删除文件
  • 4、其他
相关推荐
小郎君。14 分钟前
【无标题】
python
2301_8127314118 分钟前
CSS3笔记
前端·笔记·css3
喵手1 小时前
Python爬虫实战:数据治理实战 - 基于规则与模糊匹配的店铺/公司名实体消歧(附CSV导出 + SQLite持久化存储)!
爬虫·python·数据治理·爬虫实战·零基础python爬虫教学·规则与模糊匹配·店铺公司名实体消岐
喵手1 小时前
Python爬虫实战:国际电影节入围名单采集与智能分析系统:从数据抓取到获奖预测(附 CSV 导出)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集数据csv导出·采集国际电影节入围名单·从数据抓取到获奖预测
派葛穆1 小时前
Python-PyQt5 安装与配置教程
开发语言·python·qt
2601_949809591 小时前
flutter_for_openharmony家庭相册app实战+通知设置实现
android·javascript·flutter
小乔的编程内容分享站1 小时前
记录使用VSCode调试含scanf()的C语言程序出现的两个问题
c语言·开发语言·笔记·vscode
自可乐1 小时前
Milvus向量数据库/RAG基础设施学习教程
数据库·人工智能·python·milvus
可触的未来,发芽的智生2 小时前
发现:认知的普适节律 发现思维的8次迭代量子
javascript·python·神经网络·程序人生·自然语言处理
液态不合群2 小时前
【面试题】MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?
android·数据库·mysql