# file-service **Repository Path**: loftyhu/file-service ## Basic Information - **Project Name**: file-service - **Description**: 文件分片上传下载服务 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-10-17 - **Last Updated**: 2024-10-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ums-file-service ## 服务端 ### 部署 以服务的方式部署到Linux服务器。 1. Linux服务器预先安装.net6运行时环境,可以[参考](https://learn.microsoft.com/en-us/dotnet/core/install/linux-ubuntu); 2. 将服务端的代码发布后拷贝到Linux服务器下的`/var/www/fileserverapp`目录下; 3. 将`fileserverapp.service`文件拷贝到`/etc/systemd/system/fileserverapp.service`; 4. 通过如下命令启动`fileserverapp.service`服务,并确认它正在运行; ```bash sudo systemctl enable fileserverapp.service sudo systemctl status fileserverapp.service ``` > 参考 > 可以参考[dotnet 文档](https://learn.microsoft.com/zh-cn/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-6.0) 查看如何将dotnet应用设置为Linux服务。 ### 配置 与文件服务相关的配置在`FileServerSetting`配置节点下进行配置,支持如下配置项目: | 配置项 | 说明 | 缺省值 | 备注 | |:------|:------|:------|:------| | Port | 文件服务端口 | 10021 | | | RootPath | 文件上传保存根目录 | /filePath | | | UseLibuv | 是否使用Libuv | true | | | SoBacklog | dotnet SoBacklog | 1024 | | | DbType | 文件信息数据库保存类型 | SqlLite | 支持:SqlLite、SqlServer; | ### 数据库链接配置 文件信息保存数据库支持:SqlLite、SqlServer,通过配置项`FileServerSetting:DbType`进行配置。 1. 如果选择选择`SqlLite`作为数据库,那么数据库文件保存在家目录下`.ums-file-server\fileinfo.db`; 2. 如果选择`SqlServer`作为数据库,那么需要在通过配置项`ConnectionStrings:default`指定数据库链接; ## 客户端(wpf) 将客户端代码直接发布后,即可安装到任意桌面端电脑,首次启动后需要对其进行配置。 ![客户端配置](./config.png) | 配置项 | 说明 | 缺省值 | 备注 | |:------|:------|:------|:------| | 文件服务地址 | 格式为: ip:port | | | | 文件分片大小 | | 102400 | | | 链接超时(ms) | | 1000 | | | NettyBacklog大小 | | 1024 | | | 步进 | | 文件上传、下载步进大小 | | 配置文件保存到家目录下的`.ums-file-client/appsetting.json`,用户可以打开后对配置进行调整。 配置好后,客户端可以通过列表的方式显示文件上传、下载的信息,并且客户端可以以托盘的方式最小化到右下角。 上传、下载的文件信息将会被保存到家目录下`.ums-file-client/fileinfo.db`。 ### 测试 文件客户端提供了一个websocket服务,该服务地址为:`ws://127.0.0.1:10091/ws`。其他终端可以与该服务地址建立websocket链接,然后通过指定的消息消息实现文件的上传和下载。 1. 文件上传 ```json { "localFileName": "D:\\Desktop\\ums-im-main.zip", "serverFileName": "ums-im-main3.zip", "operationType": 0 } ``` 2. 文件下载 ```json { "localFileName": "D:\\Desktop\\test\\测试下载文件21.7z", "fileId": "c81dd444-15ed-46dd-b193-6257e3ffdee3", "operationType": 1 } // 或是 { "localFileName": "D:\\Desktop\\ums-im-main.zip", "serverFileName": "ums-im-main3.zip", "operationType": 1 } ``` | 配置项 | 说明 | 缺省值 | 备注 | |:------|:------|:------|:------| | localFileName | 本地文件全路径 | | | | serverFileName | 服务端文件相对路径地址 | | | | fileId | 文件id | | 仅下载时支持配置,下载时与`serverFileName`属性二选一 | | operationType | 操作类型 | | 0: 上传; 1: 下载 | ## 客户端(webapi) 该终端是一个asp.net core 的webapi服务,可以通过iis或是NGINX进行部署。 提供了如下三个接口: 1. 文件上传(/File/Upload--POST) 2. 文件下载(/File/Download--POST) 3. 文件操作(文件上传、下载)(/File/Operation--POST)