c# 的一些基本操作或属性
http下载文件,不保存到服务器,直接使用浏览器下载
/// <summary>
/// 根据url下载文件
/// </summary>
/// <param name="url">文件url</param>
/// <param name="fileName">文件名</param>
public void GetFileFromNetUrl(string url, string fileName)
{
Stream stream = null;
int bytesToRead = ;
byte[] buffer = new Byte[bytesToRead];
try
{
HttpWebRequest fileReq = (HttpWebRequest)HttpWebRequest.Create(url);
HttpWebResponse fileResp = (HttpWebResponse)fileReq.GetResponse();
if (fileReq.ContentLength > )
fileResp.ContentLength = fileReq.ContentLength;
stream = fileResp.GetResponseStream();
var resp = Response;
resp.ContentType = "application/octet-stream";
//设置文件名
resp.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
resp.AddHeader("Content-Length", fileResp.ContentLength.ToString());
int length;
do
{
if (resp.IsClientConnected)
{
length = stream.Read(buffer, , bytesToRead);
resp.OutputStream.Write(buffer, , length);
resp.Flush();
buffer = new Byte[bytesToRead];
}
else
{
length = -;
}
} while (length > );
}
finally
{
if (stream != null)
{
stream.Close();
}
}
}
获取网络图片并转换为base64
private string GetImgBase64(string imgUrl)
{
WebRequest request = WebRequest.Create(imgUrl);
WebResponse response = request.GetResponse();
Stream s = response.GetResponseStream();
byte[] data = new byte[];
int length = ;
MemoryStream ms = new MemoryStream();
while ((length = s.Read(data, , data.Length)) > )
{
ms.Write(data, , length);
}
ms.Seek(, SeekOrigin.Begin);
return Convert.ToBase64String(ms.ToArray());
}
判断请求来源
public ActionResult DownloadApp()
{
//获取客服端请求源
string agent = Request.UserAgent;
string[] keywords = { "Android", "iPhone", "iPod", "iPad", "Windows Phone", "MQQBrowser" };
// CloudWave.Framework.Core.Logging.Logging4net.WriteInfo(agent);
//排除 Windows 桌面系统
//if (!agent.Contains("Windows NT") || (agent.Contains("Windows NT") && agent.Contains("compatible; MSIE 9.0;")))
var downloadurl = "";
//判断是微信, 直接响应应用宝地址
if (agent.ToLower().Contains("micromessenger"))
{
//获取配置信息
}
//安卓
else if (agent.ToLower().Contains(keywords[]))
{ }
//苹果
else if(agent.ToLower().Contains(keywords[].ToLower())|| agent.ToLower().Contains(keywords[].ToLower())
|| agent.ToLower().Contains(keywords[].ToLower()))
{ }
return Json(downloadurl);
}
js encodeURI编码 后面解码
var str1 = HttpUtility.UrlDecode(Keyword);
var str2 = Server.HtmlDecode(Keyword);
var str3 = Server.UrlDecode(Keyword);
var str4 = Microsoft.JScript.GlobalObject.decodeURIComponent(Keyword);
参数渲染扩展类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace System { /// <summary>
/// 参数渲染扩展类
/// </summary>
public static class LayoutRenderer { /// <summary>
/// 格式化模板参数替换参数项为对应的值的字符串表示
/// str:模板字符串(例:"Hello {Text}")
/// </summary>
/// <param name="str">模板字符串(例:"Hello {Text}")</param>
/// <param name="jsonValue">对应模板的参数值,json格式(例:"{\"Text\":\"World\"}")</param>
/// <returns></returns>
public static string FormatTemplate(this string str, string jsonValue) {
var jObject = Newtonsoft.Json.JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(jsonValue); // (Newtonsoft.Json.Linq.JObject)req.Data;
if (jObject != null) {
string name = "", value = "";
foreach (var item in jObject) {
if (item.Value is Newtonsoft.Json.Linq.JValue) {
name = item.Key;
value = System.Web.HttpUtility.UrlDecode(item.Value.ToString());
}
str = str.Replace(string.Format("{0}{1}{2}", "{", name, "}"), value);
}
}
return str;
} /// <summary>
/// 格式化模板参数替换参数项为对应的值的字符串表示
/// str:模板字符串(例:"Hello {Text}")
/// </summary>
/// <param name="str">模板字符串(例:"Hello {Text}")</param>
/// <param name="objValue">对应模板的参数值对象实例</param>
/// <returns></returns>
public static string FormatTemplate<T>(this string str, T objValue) where T : new() {
if (objValue != null) {
var type = objValue.GetType();
var properties = type.GetProperties();
foreach (var item in properties) {
// item.GetValue();
var value = item.GetValue(objValue);
if (value != null)
str = str.Replace(string.Format("{0}{1}{2}", "{", item.Name, "}"), value.ToString());
}
}
return str;
} /// <summary>
/// 将传入的字符串中间部分字符替换成特殊字符
/// </summary>
/// <param name="value">需要替换的字符串</param>
/// <param name="startLen">前保留长度</param>
/// <param name="endLen">尾保留长度</param>
/// <param name="replaceChar">特殊字符</param>
/// <returns>被特殊字符替换的字符串</returns>
public static string ReplaceWithSpecialChar(string value, int startLen = , int endLen = , char specialChar = '*')
{
try
{
int lenth = value.Length - startLen - endLen; string replaceStr = value.Substring(startLen, lenth); string specialStr = string.Empty; for (int i = ; i < replaceStr.Length; i++)
{
specialStr += specialChar;
} value = value.Replace(replaceStr, specialStr);
}
catch (Exception)
{
return value;
} return value;
}
}
}
c# 的一些基本操作或属性的更多相关文章
- 【日常操作记录】Asp.Net Core 的一些基本操作或属性
用于记录在项目中使用到的方法.属性.操作,持续更新中 静态文件的使用 在项目中静态文件的使用需要在Startup中的Configure方法中增加: //使用静态文件 app.UseStaticFile ...
- 【操作记录】Asp.Net Core 的一些基本操作或属性
用于记录在项目中使用到的方法.属性.操作,持续更新中 .net core 开源地址 图片上传: public async Task<IActionResult> Upload([FromS ...
- 深入理解javascript对象系列第二篇——属性操作
× 目录 [1]查询 [2]设置 [3]删除[4]继承 前面的话 对于对象来说,属性操作是绕不开的话题.类似于“增删改查”的基本操作,属性操作分为属性查询.属性设置.属性删除,还包括属性继承.本文是对 ...
- JavaScript笔记01_基本操作
目录 1. JS代码编写的位置 2. 为什么JavaScript中代码要以分号结束 3. 字面量和变量 4. 数据类型 5. 类型装换 6. ++a和a++ 7. 逻辑运算符 8. 相等运算符 9. ...
- Java 集合系列01之 总体框架
Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:List列表.Set ...
- Java集合系列:-----------01集合的整体框架
内容来自:http://www.cnblogs.com/skywang12345/p/3308498.html Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映 ...
- 用pywinauto进行win32应用程序的测试
之前做win32应用测试时,用过很多大家耳熟成详的工具,接触pywinauto之前,对它的了解也不多,然而,随着对它了解的增多,发现它借助了python动态对象的能力,使得代码即便于书定,也便于阅读, ...
- Java 集合系列 01 总体框架
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- 《Genesis-3D开源游戏引擎-官方录制系列视频教程:基础操作篇》
注:本系列教程仅针对引擎编辑器:v1.2.2及以下版本 G3D基础操作 第一课<G3D编辑器初探> G3D编辑器介绍,依托于一个复杂场景,讲解了场景视图及其基本操作,属性面板和工具栏的 ...
随机推荐
- Spring笔记④--spring整合hibernate链接数据库
整合hibernate 整合什么? 有ioc容器来管理hibernate的SessionFactory 让hibernate使用上spring的声明式事务 先加入hibernate 驱动包 新建hib ...
- mvc的过滤器学习-资料查询
标题:Filtering in ASP.NET MVC 地址:https://docs.microsoft.com/en-us/previous-versions/aspnet/gg416513(v= ...
- TCP 连接管理
实验代码和内容:https://github.com/ZCplayground/Understanding-Unix-Linux-Programming/tree/master/11.socket 明 ...
- EditorUtility类的说明
SetDirty这个函数告诉引擎,相关对象所属的Prefab已经发生更改. IsPersistent用于判定对象是否是被保存在硬盘中 DisplayDialog显示一个对话框,有OK,Cancel按钮 ...
- 微信小程序之Flex布局
微信小程序页面布局方式采用的是Flex布局.Flex布局,是W3c在2009年提出的一种新的方案,可以简便,完整,响应式的实现各种页面布局.Flex布局提供了元素在容器中的对齐,方向以及顺序,甚至他们 ...
- c++浅拷贝与深拷贝(LeetCode669)
之前上C++/C#课上老师讲过这个问题,只不过当时主要是跟着老师的节奏与情形,从理论上基本了解了其原理.不过当自己写代码的时候,还是遇到了这个非常坑的问题.因此再来分析一下. 今天第一次做LeetCo ...
- jsp页面has already been called for this response错误解决方法。
创建验证码的jsp页面提示错误:has already been called for this response <%@ page contentType="image/jpeg&q ...
- 七类网线 支持10gb/s的速度的计算方法
0. 说明 我是数学白痴, 只是套了下公式... 1. 七类网线的参数: 七类线 ISO/IEC 7类/F级标准 中最新的一种双绞线,它主要为了适应万兆位以太网技术的应用和发展.但它不再是一种非屏蔽双 ...
- equals比较对象
object类的equals方法用来比较是否是同一个对象,比较内存地址. jdk中有些类重写了equals方法,只要类型,内容相同,就相等. 类如果涉及到比较应该重写equals方法,比较内存地址没有 ...
- python3+selenium3+requests爬取我的博客粉丝的名称
爬取目标 1.本次代码是在python3上运行通过的 selenium3 +firefox59.0.1(最新) BeautifulSoup requests 2.爬取目标网站,我的博客:https:/ ...