首先讲下思路

就是利用js轮询定时的给后台发送数据

话不多说看代码

---------

以下是相关方法

  1. var t
  2. function timedCount() {
  3. $.ajax({
  4. type: 'get',
  5. url: '../../TMS.Service/OrderImport/GetImportProcess?cacheKey=' + cacheKey,
  6. dataType: 'json',
  7. success: function (data) {
  8. if (data.status) {
  9. //读取一次销毁一次
  10. $('#redMsg').html("<label>当前进度:</label><span style='color:red;font-size: large;'>" + data.msg + "</span>");
  11. }
  12. },
  13. });
  14. t = setTimeout("timedCount()", 2000)
  15. }

cacheKey = guid();

var cacheKey = "";

function guid() {
function S4() {
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
}
return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
}

------接下来 看下后台代码

  1. /// <summary>
  2. ///获取执行进度查询
  3. /// </summary>
  4. /// <returns></returns>
  5. [HttpGet]
  6. public ActionResult GetImportProcess(string cacheKey=null)
  7. {
  8. try
  9. {
  10.  
  11. var result = new OrderImportBiz().GetImportProcess(cacheKey);
  12. return new ReponseModel { status = !string.IsNullOrEmpty(result), msg = result };
  13. }
  14. catch (Exception ex)
  15. {
  16.  
  17. return new ReponseModel { status = false, msg = $"<br>获取进度失败了{ex.Message}!</br>" };
  18. }
  19. }
  1. CacheHelper.SetCache(MSG_CACHE_KEY, "正在准备向系统申请添加数据!");
  1. /// <summary>
  2. /// 缓存帮助类
  3. /// </summary>
  4. public class CacheHelper
  5. {
  6. /// <summary>
  7. /// 获取数据缓存
  8. /// </summary>
  9. /// <param name="cacheKey">键</param>
  10. public static object GetCache(string cacheKey)
  11. {
  12. var objCache = HttpRuntime.Cache.Get(cacheKey);
  13. return objCache;
  14. }
  15. /// <summary>
  16. /// 设置数据缓存
  17. /// </summary>
  18. public static void SetCache(string cacheKey, object objObject)
  19. {
  20. var objCache = HttpRuntime.Cache;
  21. if (objCache!=null && objObject!=null)
  22. {
  23. objCache.Insert(cacheKey, objObject);
  24. }
  25.  
  26. }
  27.  
  28. /// <summary>
  29. ///
  30. /// </summary>
  31. /// <param name="cacheKey"></param>
  32. /// <param name="objObject"></param>
  33. /// <param name="timeout">单位秒 默认7200秒</param>
  34. public static void SetCache(string cacheKey, object objObject, int timeout = )
  35. {
  36. try
  37. {
  38. if (objObject == null) return;
  39. var objCache = HttpRuntime.Cache;
  40. //相对过期
  41. //objCache.Insert(cacheKey, objObject, null, DateTime.MaxValue, timeout, CacheItemPriority.NotRemovable, null);
  42. //绝对过期时间
  43. objCache.Insert(cacheKey, objObject, null, DateTime.Now.AddSeconds(timeout), TimeSpan.Zero, CacheItemPriority.High, null);
  44. }
  45. catch (Exception)
  46. {
  47. //throw;
  48. }
  49. }
  50. /// <summary>
  51. /// 移除指定数据缓存
  52. /// </summary>
  53. public static void RemoveAllCache(string cacheKey)
  54. {
  55. var cache = HttpRuntime.Cache;
  56. cache.Remove(cacheKey);
  57. }
  58. /// <summary>
  59. /// 移除全部缓存
  60. /// </summary>
  61. public static void RemoveAllCache()
  62. {
  63. var cache = HttpRuntime.Cache;
  64. var cacheEnum = cache.GetEnumerator();
  65. while (cacheEnum.MoveNext())
  66. {
  67. cache.Remove(cacheEnum.Key.ToString());
  68. }
  69. }
  70. }

.net MVC 项目中 上传或者处理进度获取方案的更多相关文章

  1. 在pom.xml中使用distributionManagement将项目打包上传到nexus私服

    本文介绍 如何在pom.xml中使用distributionManagement将项目打包上传到nexus私服 1.pom.xml文件添加distributionManagement节点 <!- ...

  2. Spring MVC实现文件上传

    基础准备: Spring MVC为文件上传提供了直接支持,这种支持来自于MultipartResolver.Spring使用Jakarta Commons FileUpload技术实现了一个Multi ...

  3. MVC之文件上传1

    MVC之文件上传 前言 这一节我们来讲讲在MVC中如何进行文件的上传,我们逐步深入,一起来看看. Upload File(一) 我们在默认创建的项目中的Home控制器下添加如下: public Act ...

  4. Asp.net mvc 大文件上传 断点续传

    Asp.net mvc 大文件上传 断点续传 进度条   概述 项目中需要一个上传200M-500M的文件大小的功能,需要断点续传.上传性能稳定.突破asp.net上传限制.一开始看到51CTO上的这 ...

  5. Spring MVC的文件上传

    1.文件上传 文件上传是项目开发中常用的功能.为了能上传文件,必须将表单的method设置为POST,并将enctype设置为multipart/form-data.只有在这种情况下,浏览器才会把用户 ...

  6. Spring MVC的文件上传和下载

    简介: Spring MVC为文件上传提供了直接的支持,这种支持使用即插即用的MultipartResolver实现的.Spring MVC 使用Apache Commons FileUpload技术 ...

  7. 整合MVC实现文件上传

    1.整合MVC实现文件上传整合MVC实现文件上传在实际的开发中在实现文件上传的同时肯定还有其他信息需要保存到数据库,文件上传完毕之后需要将提交的基本信息插入数据库,那么我们来实现这个操作.整个MVC实 ...

  8. MVC图片上传、浏览、删除 ASP.NET MVC之文件上传【一】(八) ASP.NET MVC 图片上传到服务器

    MVC图片上传.浏览.删除   1.存储配置信息 在web.config中,添加配置信息节点 <appSettings> <add key="UploadPath" ...

  9. spring mvc ajaxfileupload文件上传返回json下载问题

    问题:使用spring mvc ajaxfileupload 文件上传在ie8下会提示json下载问题 解决方案如下: 服务器代码: @RequestMapping(value = "/ad ...

随机推荐

  1. SQLAlchemy的应用创建

    1.首先创建app文件夹 同django 创建app 一样 创建文件 在创建的views中写入两个蓝图函数为了操作数据库的增删改查 acc.py from flask import Blueprint ...

  2. java服务端的效率

    java服务端的效率 可以的 socketclient  thread 线程池 发送消息  80个socket client并发

  3. c#在WinForm和WebForm中根据控件和属性名获取控件属性值

    在WinForm中开发的过程中,所有继承了Control控件,在使用多线程的时候,就需要通过一个通用的方法来设置界面上的控件的属性. delegate void DelegateSetControl( ...

  4. Django REST framework —— 权限组件源码分析

    在上一篇文章中我们已经分析了认证组件源码,我们再来看看权限组件的源码,权限组件相对容易,因为只需要返回True 和False即可 代码 class ShoppingCarView(ViewSetMix ...

  5. python list 字符串排序

    #coding:utf-8 import re s = ['dat2','dat10','dat5'] #方法一 new = sorted(s,key = lambda i:int(re.search ...

  6. CodeForces - 24D :Broken robot (DP+三对角矩阵高斯消元 随机)

    pro:给定N*M的矩阵,以及初始玩家位置. 规定玩家每次会等概率的向左走,向右走,向下走,原地不动,问走到最后一行的期望.保留4位小数. sol:可以列出方程,高斯消元即可,发现是三角矩阵,O(N* ...

  7. php过滤敏感词

    <?php /**  * 敏感词过滤工具类  * 使用方法  * echo FilterTools::filterContent("你妈的我操一色狼杂种二山食物"," ...

  8. EF实体类指定部分属性不映射数据库标记

    命名空间 ;using System.ComponentModel.DataAnnotations.Schema; 实体部分 public partial class Student { [NotMa ...

  9. 第三方登录绑定csrf漏洞利用

    作者:pmiaowu 文章:https://www.yuque.com/pmiaowu/web_security_1/sq87w6 这里需要使用到一个微博账号与两个某厂商账号 条件: 1.微博账号:1 ...

  10. 学习Spring-Data-Jpa(十一)---抓取策略与实体图

    1.抓取策略 在前面说到的关联关系注解中,都有一个fetch属性,@OneToOne.@ManyToOne中都默认是FetchType.EAGER,立即获取.@OneToMany.@ManyToMan ...