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编辑器介绍,依托于一个复杂场景,讲解了场景视图及其基本操作,属性面板和工具栏的 ...
随机推荐
- MYSQL-不能创建表
Can't create table '.\ticket\user_role.frm' (errno: 121) 语法是对的,但显示上面的错误 原因有三种 1.表名重复 2.以该名字命名的表之前创建过 ...
- 剑指offer :从尾到头打印链表
题目描述: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解题思路: 链表的遍历只能从头向尾进行,要从尾到头输出,考虑用栈.先从头到尾遍历一次链表,同时将值进栈,再清空栈,同时将值 ...
- 【CS231N】3、Softmax分类器
wiki百科:softmax函数的本质就是将一个K维的任意实数向量压缩(映射)成另一个K维的实数向量,其中向量中的每个元素取值都介于(0,1)之间. 一.疑问 二.知识点 1. softmax函数公式 ...
- 【TCP/IP详解 卷一:协议】第六章:DHCP 和自动配置
简介 为了使用 TCP/IP 协议族,每台主机or路由器都需要一定的配置信息: IP地址 子网掩码 广播地址 路由或转发表 DNS 协议配置方法: 手动 通过使用网络服务来获得 使用一些算法来自动确定 ...
- mongo学习1 (转)
关于mongodb的好处,优点之类的这里就不说了,唯一要讲的一点就是mongodb中有三元素:数据库,集合,文档,其中“集合” 就是对应关系数据库中的“表”,“文档”对应“行”. 一: 下载 上Mon ...
- maven在eclipse上的配置
1,安装maven,配置MAVEN_HOME 和 bin Path环境变量. 2,配置maven setting文件 <mirror> <id>alimirrorId ...
- Java-JDBC.mysql 工具类 读取本地文件配置
引用 mysql-connector-jav 的jar 配置文件为 database.propertties . 格式如下 driverClass=com.mysql.jdbc.Driver ur ...
- Hystrix 容错处理
目录 雪崩效应 容错的基本思想 什么是Hystrix 简单使用 消费端使用Hystrix 注解开启 改造消费方法 @HystrixCommand 详细配置 Hystrix线程隔离策略与传播上下文 Hy ...
- springmvc+mybatis 处理时间
项目结构: 一.数据库中time的字段为datetime1. 数据库设计如图 2. addNews.jsp <%@ page language="java" contentT ...
- Python语言算法的时间复杂度和空间复杂度
算法复杂度分为时间复杂度和空间复杂度. 其作用: 时间复杂度是指执行算法所需要的计算工作量: 而空间复杂度是指执行这个算法所需要的内存空间. (算法的复杂性体现在运行该算法时的计算机所需资源的多少上, ...