当前位置: 首页 > news >正文

1分钟临时共享空间在线小工具实现

运行效果:1分钟临时共享空间 - 免注册即时文件文本共享工具 | 极速传

直接上代码:

 

using Microsoft.AspNetCore.Mvc;
using SaaS.OfficialWebSite.Web.Utils;
using ZXing.QrCode;
using ZXing;
using SkiaSharp;
using ZXing.SkiaSharp.Rendering;
using ZXing.Common;
using ZXing.QrCode.Internal;namespace SaaS.OfficialWebSite.Web.Controllers
{public class ShareSpaceController : Controller{public IActionResult Index(){if (string.IsNullOrEmpty(HttpContext.Session.GetString("CurrentUser"))){HttpContext.Session.SetString("CurrentUser", Guid.NewGuid().ToString("N"));}return View();}private readonly ISpaceService _spaceService;public ShareSpaceController(ISpaceService spaceService){_spaceService = spaceService;}[HttpGet("GenerateQrCode")]public IActionResult GenerateQrCode([FromQuery] string content){if (string.IsNullOrWhiteSpace(content)){return BadRequest("内容不能为空");}try{var qrCodeBytes = GenerateQrCodeImg(content);return File(qrCodeBytes, "image/png");}catch (Exception ex){return StatusCode(500, $"生成二维码失败: {ex.Message}");}}public byte[] GenerateQrCodeImg(string content, int width = 300, int height = 300){// 解析颜色var foreground =  SKColors.Black;var background =  SKColors.White;// 创建渲染器var renderer = new SKBitmapRenderer();renderer.Foreground = foreground;renderer.Background = background;// 配置条形码写入器var barcodeWriter = new BarcodeWriter<SKBitmap>{Format = BarcodeFormat.QR_CODE,Options = new EncodingOptions{Width = width,Height = height,Margin =  2,PureBarcode = true},Renderer = renderer  // 使用配置好的渲染器};barcodeWriter.Options.Hints.Add(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);// 生成条形码/二维码var barcodeBitmap = barcodeWriter.Write(content);// 将图像转换为内存流using (var image = SKImage.FromBitmap(barcodeBitmap))using (var data = image.Encode(SKEncodedImageFormat.Png, 100))using (var memoryStream = new MemoryStream()){data.SaveTo(memoryStream);memoryStream.Seek(0, SeekOrigin.Begin);return memoryStream.ToArray();}}[HttpGet("GetUserSpaces")]public async Task<IActionResult> GetUserSpaces(){// 这里应该从认证中获取用户ID,示例使用固定值var userId = HttpContext.Session.GetString("CurrentUser");var spaces = await _spaceService.GetUserSpaces(userId);return Ok(SpaceApiResponse<IEnumerable<Space>>.Ok(spaces));}[HttpGet("GetSpace")]public async Task<IActionResult> GetSpace([FromQuery] string id){var space = await _spaceService.GetSpace(id);if (space == null){return NotFound(SpaceApiResponse<Space>.Fail("空间不存在"));}// 检查用户是否有权限访问var userId = HttpContext.Session.GetString("CurrentUser");if (space.OwnerId != userId && !space.MemberIds.Contains(userId)){return Unauthorized(SpaceApiResponse<Space>.Fail("无权访问此空间"));}return Ok(SpaceApiResponse<Space>.Ok(space));}[HttpPost("CreateSpace")]public async Task<IActionResult> CreateSpace([FromForm] CreateSpaceRequest request){if (string.IsNullOrWhiteSpace(request.Name)){return BadRequest(SpaceApiResponse<Space>.Fail("空间名称不能为空"));}var userId = HttpContext.Session.GetString("CurrentUser");var space = await _spaceService.CreateSpace(request.Name, userId);return Ok(SpaceApiResponse<Space>.Ok(space));}[HttpDelete("DeleteSpace")]public async Task<IActionResult> DeleteSpace([FromQuery] string id){var space = await _spaceService.GetSpace(id);if (space == null){return NotFound(SpaceApiResponse<bool>.Fail("空间不存在"));}// 检查用户是否有权限删除var userId = HttpContext.Session.GetString("CurrentUser");if (space.OwnerId != userId){return Unauthorized(SpaceApiResponse<bool>.Fail("无权删除此空间"));}var result = await _spaceService.DeleteSpace(id);return Ok(SpaceApiResponse<bool>.Ok(result));}[HttpPost("JoinSpace")]public async Task<IActionResult> JoinSpace([FromQuery] string id){var space = await _spaceService.GetSpace(id);if (space == null){return Ok(SpaceApiResponse<bool>.Fail("空间不存在"));}var userId = HttpContext.Session.GetString("CurrentUser");if (space.OwnerId == userId || space.MemberIds.Contains(userId)){return Ok(SpaceApiResponse<Space>.Ok(space));}var result = await _spaceService.AddUserToSpace(id, userId);return Ok(SpaceApiResponse<Space>.Ok(space));}[HttpGet("GetSpaceItems")]public async Task<IActionResult> GetSpaceItems([FromQuery] string id){var space = await _spaceService.GetSpace(id);if (space == null){return NotFound(SpaceApiResponse<object>.Fail("空间不存在"));}// 检查用户是否有权限访问var userId = HttpContext.Session.GetString("CurrentUser");if (space.OwnerId != userId && !space.MemberIds.Contains(userId)){return Unauthorized(SpaceApiResponse<object>.Fail("无权访问此空间"));}var items = await _spaceService.GetSpaceItems(id);return Ok(SpaceApiResponse<object>.Ok(new{name = space.Name,items = items}));}[HttpPost("AddTextItem")]public async Task<IActionResult> AddTextItem([FromForm] AddTextItemRequest request){if (string.IsNullOrWhiteSpace(request.Title) || string.IsNullOrWhiteSpace(request.Content)){return BadRequest(SpaceApiResponse<TextItem>.Fail("标题和内容不能为空"));}// 检查空间是否存在和权限var space = await _spaceService.GetSpace(request.SpaceId);if (space == null){return NotFound(SpaceApiResponse<TextItem>.Fail("空间不存在"));}var userId = HttpContext.Session.GetString("CurrentUser");if (space.OwnerId != userId && !space.MemberIds.Contains(userId)){return Unauthorized(SpaceApiResponse<TextItem>.Fail("无权在此空间添加内容"));}var textItem = await _spaceService.AddTextItem(request.SpaceId,request.Title,request.Content,userId);return Ok(SpaceApiResponse<TextItem>.Ok(textItem));}[HttpPost("UploadFile")]public async Task<IActionResult> UploadFile([FromForm] IFormFile file, [FromForm] string spaceId){if (file == null || file.Length == 0){return BadRequest(SpaceApiResponse<FileItem>.Fail("文件不能为空"));}// 检查空间是否存在和权限var space = await _spaceService.GetSpace(spaceId);if (space == null){return NotFound(SpaceApiResponse<FileItem>.Fail("空间不存在"));}var userId = HttpContext.Session.GetString("CurrentUser");if (space.OwnerId != userId && !space.MemberIds.Contains(userId)){return Unauthorized(SpaceApiResponse<FileItem>.Fail("无权在此空间上传文件"));}var fileItem = await _spaceService.AddFileItem(spaceId, file, userId);return Ok(SpaceApiResponse<FileItem>.Ok(fileItem));}[HttpDelete("DeleteItem")]public async Task<IActionResult> DeleteItem([FromQuery] string spaceId, [FromQuery] string type, [FromQuery] string id){if (type != "text" && type != "file"){return BadRequest(SpaceApiResponse<bool>.Fail("无效的类型"));}var item = (await _spaceService.GetSpaceItems(spaceId)).FirstOrDefault(i => i.Id == id && i.Type == type);if (item == null){return NotFound(SpaceApiResponse<bool>.Fail("内容不存在"));}// 检查权限var userId = HttpContext.Session.GetString("CurrentUser");if (item.CreatorId != userId){// 如果是空间所有者也可以删除var space = await _spaceService.GetSpace(item.SpaceId);if (space?.OwnerId != userId){return Unauthorized(SpaceApiResponse<bool>.Fail("无权删除此内容"));}}var result = await _spaceService.DeleteItem(id, type);return Ok(SpaceApiResponse<bool>.Ok(result));}}// DTOspublic class CreateSpaceRequest{public string Name { get; set; }}public class AddTextItemRequest{public string SpaceId { get; set; }public string Title { get; set; }public string Content { get; set; }}
}

http://www.lryc.cn/news/608312.html

相关文章:

  • 安卓自动点击器:设置点击周期 / 滑动,抢票、游戏刷日常秒会
  • 2025牛客多校第六场 D.漂亮矩阵 K.最大gcd C.栈 L.最小括号串 个人题解
  • C++入门基础(三):const引用、指针和引用的关系、inline(修饰内联函数)替代宏、nullptr代替null
  • Rust进阶-part1-智能指针概述-box指针
  • Java中Lambda 表达式的解释
  • 机器学习实战:KNN算法全解析 - 从原理到创新应用
  • 机器学习消融实验:方法论演进、跨领域应用与前沿趋势
  • 大模型(五)MOSS-TTSD学习
  • 【MATLAB】(四)函数运算
  • 【MATLAB】(五)向量
  • C语言第八章指针一
  • MybatisPlus生成代码
  • MQTT协议测试环境部署
  • MybatisPlus-自动生成代码
  • 洛谷刷题8.2
  • 【AI学习】RadioDiff:代码学习
  • 福彩双色球第2025088期篮球号码分析
  • Leetcode-141.环形链表
  • 面试-python单例模式实现
  • 谈谈WebAssembly、PWA、Web Workers的作用和场景
  • 【机器学习】两大线性分类算法:逻辑回归与线性判别分析:找到分界线的艺术
  • uniapp倒计时计算
  • InfluxDB 与 Node.js 框架:Express 集成方案(一)
  • Oracle 11g RAC集群部署手册(一)
  • 电力系统分析学习笔记
  • Angular初学者入门第一课——搭建并改造项目(精品)
  • 学习笔记:无锁队列的原理以及c++实现
  • 基于Dockerfile 部署一个 Flask 应用
  • Orange的运维学习日记--25.Linux文件系统基本管理
  • 【BTC】挖矿