asp.net-mvc – ASP.NET不向客户端发送上传进度
发布时间:2020-12-16 07:20:28 所属栏目:asp.Net 来源:网络整理
导读:我正在做这样的图片上传: var xhr = new XMLHttpRequest();xhr.upload.addEventListener("progress",function (e) { // THIS DOESN'T UPDATE UNTIL THE END. EVEN WITH A 10MB IMAGE},false);xhr.open('POST','https://www.coolsite.com/api/upload',true);
我正在做这样的图片上传:
var xhr = new XMLHttpRequest(); xhr.upload.addEventListener("progress",function (e) { // THIS DOESN'T UPDATE UNTIL THE END. EVEN WITH A 10MB IMAGE },false); xhr.open('POST','https://www.coolsite.com/api/upload',true); reader.onload = function (evt) { var blob = new Blob([evt.target.result]); var formData = new FormData(); formData.append('image',blob); xhr.send(formData); }; reader.readAsArrayBuffer(file); 然后在服务器上我读它像这样: public class VideoController : CORSController { ImageSaver imageSaver = new ImageSaver(); public HttpResponseMessage Post() { Stream imageStream = HttpContext.Current.Request.Files[0].InputStream; imageSaver.save(imageStream); return new HttpResponseMessage { StatusCode = HttpStatusCode.OK }; } } public class CORSController : ApiController { public HttpResponseMessage Options() { return new HttpResponseMessage { StatusCode = HttpStatusCode.OK }; } } 但事情是,即使我使用巨大的图像文件,客户端也只有在文件上传完成后才能获得进度事件.我已经找到了答案,并尝试了各种配置来附加进度事件,但没有任何作用.我想我在服务器上做错了什么. 注意 – 这是一个CORS上传,所以可能与它有关. 解决方法
如果浏览器控制台中没有错误或返回状态,则问题与服务器或其配置无关.虽然,我认为显示上传进度主要是客户端问题.所以我叮嘱你使用一个更干净的有组织的客户端代码,就像我为你写的那样:
var bar = $('#uploadprogress');//like a <div> which will show the progress var current = $('#preview'); $('#sendform').ajaxForm({ beforeSend: function () { $('#progressbar').show(); var percentVal = '0%'; bar.width(percentVal) bar.html(percentVal); },uploadProgress: function (event,position,total,percentComplete) { var percentVal = percentComplete + '%'; bar.width(percentVal) bar.html(percentVal); },success: function () { var percentVal = '100%'; bar.width(percentVal) bar.html(percentVal); },complete: function (xhr) { current.html(xhr.responseText); } }); 控制器看起来像这样: public ActionResult Upload(HttpPostedFileBase file) { if (file != null) { string extension = Path.GetExtension(file.FileName).ToLower(); if (extension == ".jpg" || extension == ".png") { file.SaveAs(Server.MapPath(_directory + file.FileName)); return PartialView("_view"); } else throw new Exception("Not Supported File"); } throw new Exception("Empty File"); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-4 – 使用Bootstrap日期时间选择器,Asp.Net MV
- 在两个应用程序中拆分ASP.NET应用程序 – 处理共享页面/用户
- asp.net-mvc – ASP.NET MVC标识:多个登录路径并修改控制器
- asp.net – 如何确定哪个按钮导致回发
- 免费构建.NET服务器
- asp.net-mvc – 如何通过URL获取RouteData?
- asp.net-mvc – 为什么Visual Studio不会在发布中移动某些文
- asp-classic – 从ASP.Classic中的Web.Config读取Connectio
- 为什么在ASP.NET MVC中暂停超时?
- asp.net-mvc – 并不总是创建__RequestVerificationToken
推荐文章
站长推荐
- asp.net-web-api – Ninject 3 – BeginBlock()是
- asp.net-mvc-3 – 在IIS上运行时,ASP.NET Web应用
- ASP.NET身份验证cookie仅在IE中消失,仅在特定位置
- asp.net – 静态方法的缺点是什么?
- asp.net-mvc – 如何在我自己的自定义助手中使用
- asp.net-mvc – 从另一个区域内的动作渲染局部视
- asp.net-core – .Net核心基本问题
- asp.net-mvc – ASP.Net [HiddenInput]数据属性在
- 在ASP.NET中,如何让浏览器将字符串内容下载到文件
- asp.net-mvc – 如何在ASP.NET MVC Web API中将U
热点阅读