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

企业网站的作用网页版梦幻西游洞天幻境

企业网站的作用,网页版梦幻西游洞天幻境,公司建网站怎么弄,无人机公司网站建设【导读】最近因维护.NET和.NET Core项目用到文件上传功能#xff0c;虽说也做过#xff0c;但是没做过什么对比#xff0c;借此将二者利用Ajax通过FormData上传文件做一个总结#xff0c;通过视图提交表单太简单#xff0c;这里不做阐述#xff0c;希望对有需要的童鞋能有… 【导读】最近因维护.NET和.NET Core项目用到文件上传功能虽说也做过但是没做过什么对比借此将二者利用Ajax通过FormData上传文件做一个总结通过视图提交表单太简单这里不做阐述希望对有需要的童鞋能有力所能及的帮助。.NET Web APi FormData文件上传我们将参数和文件都通过FormData来上传给出如下HTML代码 div classform-horizontal stylemargin-top:80px;div classform-grouplabel classcontrol-label col-md-2 forcaption标题/labeldiv classcol-md-10input nametitle idtitle typetext //div/divdiv classform-grouplabel classcontrol-label col-md-2 forcaption文件/labeldiv classcol-md-10input namefile idfile multiple typefile //div/divdiv classform-groupdiv classcol-md-offset-2 col-md-10input typesubmit idbtn value提交 classbtn btn-success //div/div /div 恕我有点强迫症界面好看点看着也舒服接下来则是脚本自然不用多说利用FormData上传文件网上一搜遍地都是 $(function () {$(#btn).click(function () {var data  new FormData();var title  $(#title).val();data.append(title, title);var files  $(#file)[0].files;;for (var i  0; i  files.length; i) {data.append(file, files[i]);}$.ajax({url: /api/upload/upload,type: post,cache: false,contentType: false,processData: false,data: data,});}); }); 不过需要注意的是对现代大多浏览器都都已支持将上述contentType设置为false后就是在请求头中添加multipart/form-data若是老版本浏览器则需要在请求头中手动添加表单多文件上传标识如下beforeSend: function (request) {request.setRequestHeader(Content-Type, multipart/form-data; boundary  data.boundary); } 前端我们已经搞完接下来我们回到后台.NET Web APi已提供专门读取FormData数据的APi如下//检查请求是否包含multipart/form-data. if (!Request.Content.IsMimeMultipartContent()) {throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); }//将文件存储到App_Data文件夹下 var root  HttpContext.Current.Server.MapPath(~/App_Data);//实例化MultipartFormDat流 var provider  new MultipartFormDataStreamProvider(root);// 读取表单数据 await Request.Content.ReadAsMultipartAsync(provider); 若上传2个文件此时上传App_Data目录下的文件如下这般 若要读取提交的表单参数我们如下获取//获取表单参数数据 var formData  provider.FormData; 那么我们怎么将上述类似临时文件数据转换为我们上传的文件数据呢我们只需将上述文件名转换我们上传的文件名或者其他自定义文件名称即可如下// 获取文件数据 foreach (MultipartFileData file in provider.FileData) {string fileName  file.Headers.ContentDisposition.FileName;if (fileName.StartsWith(\)  fileName.EndsWith(\)){fileName  fileName.Trim();}if (fileName.Contains(/) || fileName.Contains(\)){fileName  Path.GetFileName(fileName);}//将本地文件转换为实际所需文件File.Move(file.LocalFileName, Path.Combine(root, fileName)); } 当然除了通过上述流读取表单相关数据外.NET Web APi还提供了内存表单流只是利用此流时表单参数和文件放置在一起我们需要通过文件相关参数来做区分然后分别获取文件和表单参数如下var provider  new MultipartMemoryStreamProvider();await Request.Content.ReadAsMultipartAsync(provider);var formData  new NameValueCollection();foreach (var httpContent in provider.Contents) {var formFileName  httpContent.Headers.ContentDisposition?.FileName?.Trim(\);var formContentType  httpContent.Headers?.ContentType?.ToString();if (!string.IsNullOrEmpty(formFileName)  !string.IsNullOrEmpty(formContentType)){//文件数据using (var fileStream  new FileStream(root, FileMode.Create)){await httpContent.CopyToAsync(fileStream);}}else{//表单参数var formFieldName  httpContent.Headers.ContentDisposition.Name;var formFieldValue  await httpContent.ReadAsStringAsync();formData.Add(formFieldName, formFieldValue);} } .NET Core Web APi FormData文件上传HTML和脚本在上述已经提供这里我们只需关注APi获取即可。在.NET Core中没有专门提供获取FormData数据的APi那么我们是如何获取的呢?找了找网上资料发现大部分是来自广告网站CSDN不过这些文章都是转载的博客园都是如下这样获取[Route(api/[controller]/[action])] [ApiController] public class UploadController : ControllerBase {public IActionResult Upload(){var files  Request.Form.Files;return Ok();} } 如上也没问题我能说你这思路还停留在.NET Web APi吗啥年代了还通过请求上下文去获取.NET Core灵活绑定机制使用起来它不香吗通过如下直接绑定岂不完事此时有的童鞋又有疑问了上传不仅仅包括文件还包括参数比如上述还有标题那该如何是好.NET Core的强类型绑定机制它不香吗如下定义强类型public class ExampleUpload {public string Title { get; set; }public ListIFormFile Files { get; set; } } 注意绑定参数时一定要使用[FromForm]否则将出现请求415同时也要将前端Ajax FormData文件的参数名和强类型参数名一致。[Route(api/[controller]/[action])] [ApiController] public class UploadController : ControllerBase {public IActionResult Upload([FromForm]ExampleUpload example){return Ok();} } 主要发现网上一部分资料对于利用FormData上传文件在利用.NET Core接收参数时姿势不是很正确故而才有此文在.NET Core中参数的绑定已完全不需要借助请求上下文来获取其绑定机制灵活且强大
http://www.zqtcl.cn/news/752034/

相关文章:

  • 网站建站免费空间外贸网站建设与优化
  • 网站极简设计建立网站基本知识
  • 网站建设管理标准wordpress rss采集
  • 乐清网站建设费用装修房子的app软件哪个好
  • 专业网站搭建运营工业网站素材
  • 建网站要会什么wordpress电影下载站
  • 济南设计网站的公司西安模板网站建设
  • 网站搜索功能如何实现网络培训学习心得体会
  • 网站设计方案书ppt网站展示型推广
  • 中国建设注册管理中心网站首页大连地区建设网站
  • 广州致峰网站建设藁城网络推广
  • 怎么做免费个人网站wordpress dux 5.3
  • 手机触屏版网站网站功能介绍
  • 商场设计案例青岛百度快速排名优化
  • 制作网站要步骤湖北省建设厅网站上岗证查询
  • 网站建设制作公司都选万维科技制作网站需要注意什么
  • jsp小型网站开发wordpress微博插件
  • app充值网站开发怎么去做网站
  • 合肥建站网站模板word上下页纸张方向
  • 大学跳蚤市场网站建设哈尔滨网站建设
  • 网站开发合同中的知识产权条款怎么给公司建网站
  • 网站代维护wordpress 主题中心
  • 中铁广州建设有限公司网站临安做企业网站的公司
  • 国内可访问的海外网站和应用重庆好玩还是成都好玩
  • 定制开发小程序天津做网站优化的公司
  • 公司网站首页怎么做在线二级域名子域名查询
  • 淮南网站优化公司国内什么网站用asp.net
  • 做数据网站带网站的图片素材
  • 大方县住房城乡建设局网站wordpress 连接flickr
  • 国家建设部网站倪虹邢台新闻最新事件