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

品牌网站建站目的简述jsp网站开发的环境配置过程

品牌网站建站目的,简述jsp网站开发的环境配置过程,设计logo网站免,做html网站实现一个安全且高效的图片上传接口#xff1a;使用ASP.NET Core和SHA256哈希 在现代Web应用程序中#xff0c;图片上传功能是常见的需求之一。无论是用户头像、产品图片还是文档附件#xff0c;确保文件上传的安全性和效率至关重要。本文将详细介绍如何使用ASP.NET Core构建…实现一个安全且高效的图片上传接口使用ASP.NET Core和SHA256哈希 在现代Web应用程序中图片上传功能是常见的需求之一。无论是用户头像、产品图片还是文档附件确保文件上传的安全性和效率至关重要。本文将详细介绍如何使用ASP.NET Core构建一个安全且高效的图片上传接口并介绍如何利用SHA256哈希算法避免重复文件存储。 项目背景 我们的目标是创建一个图片上传接口支持以下特性 支持多种图片格式JPEG、PNG、GIF文件大小限制不超过2MB避免重复文件存储返回友好的错误消息 技术栈 .NET 8: 提供强大的API开发框架。IFormFile: 用于处理上传的文件。SHA256: 用于生成文件的唯一标识符避免重复存储相同内容的文件。NLog/ILogger: 用于日志记录。 代码实现 1. 控制器定义 首先我们定义了一个ImageUploadController类来处理图片上传请求。下面是完整的控制器代码及其详细注释。 using MES.Entity; using MES.Entity.Dtos.SystemDto.Response.UploadImage; using Microsoft.AspNetCore.Mvc; using System.Security.Cryptography; using System.IO;namespace MES.API.Controllers.SystemControllers {/// summary/// 图片上传控制器/// /summary[Route(api/[controller])][ApiController]public class ImageUploadController : ControllerBase{/// summary/// 日志记录器/// /summaryprivate readonly ILoggerImageUploadController _logger;/// summary/// 允许上传的文件类型/// /summaryprivate readonly string[] sourceArray new[] { image/jpeg, image/png, image/gif };/// summary/// 静态文件根目录/// /summaryprivate readonly string StaticFileRoot wwwroot;/// summary/// 构造函数注入ILogger/// /summary/// param namelogger日志记录器/parampublic ImageUploadController(ILoggerImageUploadController logger){this._logger logger;}/// summary/// 上传图片方法/// /summary/// param namefile图片文件/param/// returns上传结果/returns[HttpPost]public async TaskIActionResult UploadImageAsync(IFormFile file){// 返回数据对象ApiResultUploadImageResponseDto apiResult new();try{// 检查文件类型是否合法if (!sourceArray.Contains(file.ContentType)){apiResult.Message 图片格式不正确请上传 jpg、png、gif 格式的图片;return Ok(apiResult);}// 检查文件大小是否超过限制 (2MB)if (file.Length 2 * 1024 * 1024) {apiResult.Message 文件大小超过限制请上传小于 2M 的图片;return Ok(apiResult);}if (file.Length 0){// 获取文件名string fileName Path.GetFileName(file.FileName); // 构造文件路径按年月日分层存储string fileUrlWithoutFileName $InvoiceStaticFile/{DateTime.Now.Year}/{DateTime.Now.Month}/{DateTime.Now.Day}; string directoryPath Path.Combine(StaticFileRoot, fileUrlWithoutFileName);// 创建文件夹如果文件夹已存在则什么也不做Directory.CreateDirectory(directoryPath);// 使用SHA256生成文件的唯一标识符using SHA256 hash SHA256.Create();byte[] hashByte await hash.ComputeHashAsync(file.OpenReadStream());string hashedFileName BitConverter.ToString(hashByte).Replace(-, );// 重新获得一个文件名string newFileName hashedFileName . fileName.Split(.).Last();string filePath Path.Combine(directoryPath, newFileName);// 将文件写入指定路径await using FileStream fileStream new(filePath, FileMode.Create);await file.CopyToAsync(fileStream);// 构造完整的URL以便前端使用string fullUrl ${Request.Scheme}://{Request.Host}/{fileUrlWithoutFileName}/{newFileName};// 设置返回的数据apiResult.Data new UploadImageResponseDto(){FilePath fileUrlWithoutFileName,FileName newFileName,FullPathName Path.Combine(fileUrlWithoutFileName, newFileName)};apiResult.Message 上传成功;return Ok(apiResult);}apiResult.Message 文件为空请重新上传;}catch (Exception ex){// 记录错误日志_logger.LogError(UploadImageAsync上传图片失败原因{ErrorMessage}, ex.Message);apiResult.Code ResponseCode.Code999;apiResult.Message 一般性错误请联系管理员;}return Ok(apiResult);}} }2. 关键步骤解析 文件类型检查 我们首先检查上传文件的ContentType是否在允许的范围内JPEG、PNG、GIF。如果不在则返回相应的错误信息。 if (!sourceArray.Contains(file.ContentType)) {apiResult.Message 图片格式不正确请上传 jpg、png、gif 格式的图片;return Ok(apiResult); }文件大小检查 为了防止大文件占用过多服务器资源我们限制了上传文件的最大大小2MB。 if (file.Length 2 * 1024 * 1024) // 限制文件大小不超过 2M {apiResult.Message 文件大小超过限制请上传小于 2M 的图片;return Ok(apiResult); }使用SHA256生成唯一文件名 为了避免重复存储相同的文件我们使用SHA256哈希算法生成唯一的文件名。 using SHA256 hash SHA256.Create(); byte[] hashByte await hash.ComputeHashAsync(file.OpenReadStream()); string hashedFileName BitConverter.ToString(hashByte).Replace(-, ); string newFileName hashedFileName . fileName.Split(.).Last();文件保存 我们将文件保存到指定路径并构造完整的URL以便前端使用。 string filePath Path.Combine(directoryPath, newFileName); await using FileStream fileStream new(filePath, FileMode.Create); await file.CopyToAsync(fileStream); string fullUrl ${Request.Scheme}://{Request.Host}/{fileUrlWithoutFileName}/{newFileName};3. 错误处理与日志记录 在发生异常时我们使用ILogger记录错误信息并返回通用的错误消息给客户端。 catch (Exception ex) {_logger.LogError(UploadImageAsync上传图片失败原因{ErrorMessage}, ex.Message);apiResult.Code ResponseCode.Code999;apiResult.Message 一般性错误请联系管理员; }总结 通过上述步骤我们实现了一个高效且安全的图片上传接口。该接口不仅能够验证文件类型和大小还能够避免重复存储相同的文件提升了系统的性能和用户体验。希望这篇文章对你有所帮助 如果你有任何问题或建议请在评论区留言我会尽力解答。 希望这篇更新后的博客文章对你有帮助你可以根据实际需求进一步调整和完善内容。如果你有更多具体的需求或者想要添加的内容随时告诉我
http://www.hkea.cn/news/14300602/

相关文章:

  • 做网站大作业的心得体会h5制作软件包括
  • 北京模板网站建站新手建站广告联盟赚钱
  • 哪些网站需要备案做钓鱼网站教程视频教程
  • 中国建设银行个人信息网站建设工程合同应当采用什么形式
  • 此网站正在建设中页面企业网站建设的案例
  • 学做蛋糕的网站网站开发目录
  • 电子商务网站建设培训课件动画设计专业哪个学校比较好
  • 网站优化排名工具哪些网站上推广比较好
  • 软件下载网站如何履行安全管理义务确保提供的软件做小程序和做网站哪个好
  • 做网站还有用吗外贸网站建设流程
  • 如何建设营销型的网站wordpress 上传中文文件名
  • 上国外网站的dns移动互联网营销的目标是( )
  • 淘宝网站小视频怎么做网站开发费税率是多少钱
  • 网站建设云服务企业网站建设套餐上海
  • 济南做网站哪家好怎么选网页设计与制作课程结构
  • 企业网站开发平台免备案的网站
  • 商品数据包网站开发天津站设计单位
  • 时代汇创网站建设公司cd-wordpress
  • 淘宝竞价排名网站排名优化首页
  • 网站怎么做现场直播视频公司网站运营方案策划
  • 东莞网站建设销售公司无广告的h5制作软件
  • 太仓营销型网站建设高端网站的建设
  • 网站域名重要吗寺庙招人做网站维护吗
  • 企业网站栏目规划的重要性培训学校如何做网站宣传
  • 做网站的空间要多大的网站建设排版规定
  • 西安网站建设动力无限建站之星做的网站如何导出
  • 直播网站开发秀色中国十大做网站公司
  • 做网站网页电商网站 支付宝接口
  • 个人做网站有什么坏处怎么做网页菜单
  • 网站模板论坛池州市建设管理处网站