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、其他
相关推荐
TechWayfarer39 分钟前
Cloudflare 9·15新政倒计时:用IP风险画像识别AI爬虫,防止误伤Googlebot
网络·人工智能·爬虫·python·tcp/ip·网络安全
Anhty1 小时前
2026九月最新变声器测评:iOS安卓双端适配,低延迟运行更稳定
android·人工智能·功能测试·ios·智能手机
禹凕1 小时前
滑动窗口算法实战指南
python·算法
推送者1 小时前
用宠物照片制作桌宠:从AI拆帧到九点标定的本地化实现笔记
笔记·宠物·用宠物照片制作桌宠
一条破秋裤1 小时前
16_TIM编码器接口测速
笔记·stm32·学习
tju新生代魔迷1 小时前
Verilog HDL 学习笔记(十)| 第10章 时序和延迟
笔记·学习·fpga开发
论文复现现场2 小时前
RTX 4090 24GB 能跑 Qwen3.8-27B 吗?单卡显存计算与云端部署指南
人工智能·python·云计算·llama·gpu算力
Patrick在香港2 小时前
模型路由器实测:12 个任务省 77%,旗舰过载时的降级要打出显式标记
python·llm·智能路由器·api·架构设计·成本优化
Looooking2 小时前
Python 之 jwt 令牌生成和校验
python·jwt
渡我白衣2 小时前
并查集:基础认识与模拟实现
android·java·javascript·数据结构·c++·算法·并查集