feat: 文传易匿名临时文件传输站初始版本
- 后端 .NET 8 + FreeSql + 阿里云 OSS,支持共享/私密/标签三种文件模式 - 前端 Vue3 + Vite + TDesign,上传/取件/管理三页 - 取件码/二维码/海报合成(含保存二维码为图片) - deploy/ 部署文档与一键 FTP 发布脚本 - appsettings.json 含真实凭据,已 gitignore 不入库
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
namespace WenChuanyi.Api.Dtos;
|
||||
|
||||
/// <summary>文件信息 / 管理列表 / 标签列表 DTO(不暴露密码明文)</summary>
|
||||
public class FileInfoDto
|
||||
{
|
||||
public long Id { get; set; }
|
||||
public string PickCode { get; set; } = null!;
|
||||
public string FileType { get; set; } = null!;
|
||||
public bool HasPassword { get; set; }
|
||||
public string OriginalName { get; set; } = null!;
|
||||
public long Size { get; set; }
|
||||
public string? MimeType { get; set; }
|
||||
public int DownloadCount { get; set; }
|
||||
/// <summary>上传者 IP(安全审计):仅管理列表填充,取件/标签/公开接口不暴露</summary>
|
||||
public string? UploadIp { get; set; }
|
||||
public bool IsPermanent { get; set; }
|
||||
public DateTime? ExpiresAt { get; set; }
|
||||
public DateTime CreatedAt { get; set; }
|
||||
|
||||
/// <summary>剩余有效期文本(永久/已过期/N天N小时)</summary>
|
||||
public string ExpireText { get; set; } = "永久";
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
namespace WenChuanyi.Api.Dtos;
|
||||
|
||||
/// <summary>公开上传-共享文件:有效期小时数(0=永久,缺省 24),pwd/tag 可同时提供(不互斥)</summary>
|
||||
public class OpenUploadRequest
|
||||
{
|
||||
public string FilePath { get; set; } = null!;
|
||||
public long ExpiresHours { get; set; } = 24;
|
||||
public string? Pwd { get; set; }
|
||||
public string? Tag { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>公开上传-私密文件:必须有密码,可同时带标签</summary>
|
||||
public class OpenUploadPriceRequest
|
||||
{
|
||||
public string FilePath { get; set; } = null!;
|
||||
public string Pwd { get; set; } = null!;
|
||||
public string? Tag { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>公开上传-标签文件:必须带标签(永久保存),可同时带密码</summary>
|
||||
public class OpenUploadTagRequest
|
||||
{
|
||||
public string FilePath { get; set; } = null!;
|
||||
public string Tag { get; set; } = null!;
|
||||
public string? Pwd { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>公开上传响应</summary>
|
||||
public class OpenResult
|
||||
{
|
||||
public string PickCode { get; set; } = null!;
|
||||
public string PickUrl { get; set; } = null!;
|
||||
public string DownloadUrl { get; set; } = null!;
|
||||
}
|
||||
|
||||
/// <summary>公开下载链接查询响应</summary>
|
||||
public class OpenDownloadResult
|
||||
{
|
||||
public string DownloadUrl { get; set; } = null!;
|
||||
public string PickUrl { get; set; } = null!;
|
||||
public bool NeedPassword { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>管理删除请求体:按 Id 或取件码删除</summary>
|
||||
public class DeleteRequest
|
||||
{
|
||||
public long? Id { get; set; }
|
||||
public string? PickCode { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
namespace WenChuanyi.Api.Dtos;
|
||||
|
||||
/// <summary>上传响应:取件凭证 + 管理码 + 文件信息</summary>
|
||||
public class UploadResultDto
|
||||
{
|
||||
public long Id { get; set; }
|
||||
public string PickCode { get; set; } = null!;
|
||||
public string AdminCode { get; set; } = null!;
|
||||
public string FileType { get; set; } = null!;
|
||||
public string OriginalName { get; set; } = null!;
|
||||
public long Size { get; set; }
|
||||
public bool IsPermanent { get; set; }
|
||||
public DateTime? ExpiresAt { get; set; }
|
||||
|
||||
/// <summary>取件页链接(二维码内容)</summary>
|
||||
public string PickUrl { get; set; } = null!;
|
||||
}
|
||||
Reference in New Issue
Block a user