简介:

实现数据实时刷新:SignalR

后台服务:.NET/WebAPI

为了减轻web的压力,将接口中接收数据的方法写到SignalR的Hub中

在此放一小段代码给自己加深下印象,博主有点健忘......

/// <summary>
/// 向客户端发送照片上传的结果
/// </summary>
/// <param name="imageInfo">JSON字符串</param>
public void HhtUpCarInfo(string imageInfo)
{
//var声明一个变量,接收Base64StringToFile() 的返回值

var uploadImageResult = Base64StringToFile(imageInfo);

//然后通过Clients.All.Base64StringToFile(uploadImageResult)将结果返回给移动端
Clients.All.Base64StringToFile(uploadImageResult);
}

/// <summary>
/// 上传照片
/// </summary>
/// <param name="imageInfo"></param>
/// <returns>图片的相对路径</returns>
public string Base64StringToFile(string imageInfo)
{

//通过多次实验发现SignalR中只能接收安卓上传的字符串格式,所以在这里调用了博主自己的类库中一个将JSON转换成对象的方法来接收参数
CarInfoImageDto carInfoImage = JsonHelper.DeserializeByNewton<CarInfoImageDto>(imageInfo);

//调用博主自己的类库中将Base64String转换成图片的方法
return DecodeBase64.Base64StringToFile(carInfoImage.Base64String, carInfoImage.FileType);
}

/// <summary>
/// 将JSON字符串转换为C#对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="json"></param>
/// <returns></returns>
public static T DeserializeByNewton<T>(string json)
{
return JsonConvert.DeserializeObject<T>(json);
}

/// <summary>
/// 上传图片信息
/// </summary>
/// <param name="base64String">Base64字符串</param>
/// <param name="fileType">文件类型</param>
/// <returns>如果保存成功,会返回文件的相对路径;否则返回空值</returns>
public static string Base64StringToFile(string base64String, string fileType)
{
string virtualPath = string.Format("/File/{0:yyyyMMddhhmmss}.{1}", DateTime.Now, fileType);
string physicalPath = HttpContext.Current.Server.MapPath(virtualPath);
if (!string.IsNullOrEmpty(base64String) && !File.Exists(physicalPath))
{
byte[] imageBytes = Convert.FromBase64String(base64String);
MemoryStream memoryStream = new MemoryStream(imageBytes, 0, imageBytes.Length);
memoryStream.Write(imageBytes, 0, imageBytes.Length);
Image image = Image.FromStream(memoryStream);
image.Save(physicalPath);
return virtualPath;
}
return "上传失败";
}

在上面的代码示例中可以深入了解SignalR与客户端数据的传输特点以及交互的实现。

关于SignalR实现页面实时刷新的的功能可以去看一下博主SignalR分类下的文章,你会对SignalR有一个更深刻的认识。

在Signalr的Hub中写方法实现与安卓的数据交互的更多相关文章

  1. 使用bs4中的方法爬取星巴克数据

    import urllib.request # 请求url url = 'https://www.starbucks.com.cn/menu/' # 模拟浏览器发出请求 response = urll ...

  2. SpringMVC入门(二)—— 参数的传递、Controller方法返回值、json数据交互、异常处理、图片上传、拦截器

    一.参数的传递 1.简单的参数传递 /* @RequestParam用法:入参名字与方法名参数名不一致时使用{ * value:传入的参数名,required:是否必填,defaultValue:默认 ...

  3. Silverlight中如何自己写方法将DataTable转换为PagedCollectionView数据(动态创建类)

    将DataTable转换为PagedCollectionView数据,我们可以借用DataTable的GetBindableData()方法,如下: DataTable dt=new DataTabl ...

  4. JS-对象中写方法

  5. aspx 页面中 js 引用与页面后台的数据交互 --【 后台调用 js 】

    js 中调用后台方法   一.用Response.Write方法 Response.Write("<script type='text/javascript'>alert(&qu ...

  6. aspx 页面中 js 引用与页面后台的数据交互 --【 js 调后台】

    后台调用 js 方法 前台调用后台方法与变量:  后台被调用的方法必须是public 或 protected 后台被调用的方法必须是静态的static 方法一:通过WebService来实现 步骤: ...

  7. 使用AIDL远程调用服务中的方法

    AIDL:android interface define language(接口定义语言) 作用:方便远程调用其他服务中的方法 注意:安卓四大组件都要在清单文件注册 aidl创建图: AIDL的全称 ...

  8. 五、React事件方法(自写一个方法(函数),然后用按钮onClick触发它、自写方法改变this指向3种写法、

    上接:https://www.cnblogs.com/chenxi188/p/11782349.html 项目目录: my-app/ README.md node_modules/ package.j ...

  9. 分享两个模拟get和post方法的工具类,让应用能够与服务器进行数据交互

    很久没有码字了,今天跟大家分享一个模拟get和post方法的工具类,在安卓应用中很多都需要跟服务器进行数据交互,这需要两方面的配合,首先服务器端会给应用提供一些数据交互的接口,可是怎样在应用中去调用呢 ...

随机推荐

  1. YII 1.0模型标签与验证规则,前后台验证

    model Admin.php model(),tabName()是固定格式 <?php /* 管理员模型 * ----------------------------------------- ...

  2. JQuery动画animate的stop方法使用详解

    JQuery动画animate的stop方法使用详解 animate语法: 复制代码 代码如下: $(selector).animate(styles,speed,easing,callback) 复 ...

  3. HTML 颜色

    HTML 颜色 HTML 颜色由红色.绿色.蓝色混合而成. 颜色值 HTML 颜色由一个十六进制符号来定义,这个符号由红色.绿色和蓝色的值组成(RGB). 种颜色的最小值是0(十六进制:#00).最大 ...

  4. win7配置自己的IIS服务器亲自做的图文很详细

    跟人网站爱好初学者必看的win7系统配置自己的IIS,可以在你自己的电脑上配置网站服务器发不到网上,下面就跟着我的步骤一起做吧100%成功. 步骤/方法     点击开始-------控制面板这个就是 ...

  5. PHP用户注册邮箱并验证激活帐号

    我们在很多网站注册会员时,注册完成后,系统会自动向用户的邮箱发送一封邮件,这封邮件的内容就是一个URL链接,用户需要点击打开这个链接才能激活之前在该网站注册的帐号.激活成功后才能正常使用会员功能. 查 ...

  6. border-radius是向元素添加圆角边框的方法

    border-radius:10px; /* 所有角都使用半径为10px的圆角 */ border-radius: 5px 4px 3px 2px; /* 四个半径值分别是左上角.右上角.右下角和左下 ...

  7. 国内值得关注的官方API集合

    项目地址:https://github.com/marktony/Awesome_API 本页仅收集国内部分官方API,如需查看其他版本,请点击这里. 目录 笔记 出行 词典 电商 地图 电影 后端云 ...

  8. OpenCV框架介绍

    OpenCV框架介绍 概述 OpenCV是一个开放源代码的计算机视觉应用平台,由英特尔公司下属研发中心俄罗斯团队发起该项目,开源BSD证书,OpenCV的目标是实现实时计算机视觉,,是一个跨平台的计算 ...

  9. ubuntu14.04下手动安装eclipse

    ubuntu14.04下手动安装eclipse 第一步: 安装jdk 第二步: 下载eclipse,假设下载的文件文件名为eclipse.tar.gz 第三步: 解压 sudo -zxvf ./ecl ...

  10. 代码神器Atom,最常用的几大插件,你值得拥有。

    作者:魔洁 atom常用插件 atom插件安装File>Settings>intall搜索框输入插件名,点击Packages搜索,搜索出来后点击intall安装,建议你先安装(simpli ...