http下载文件,不保存到服务器,直接使用浏览器下载

  1. /// <summary>
  2. /// 根据url下载文件
  3. /// </summary>
  4. /// <param name="url">文件url</param>
  5. /// <param name="fileName">文件名</param>
  6. public void GetFileFromNetUrl(string url, string fileName)
  7. {
  8. Stream stream = null;
  9. int bytesToRead = ;
  10. byte[] buffer = new Byte[bytesToRead];
  11. try
  12. {
  13. HttpWebRequest fileReq = (HttpWebRequest)HttpWebRequest.Create(url);
  14. HttpWebResponse fileResp = (HttpWebResponse)fileReq.GetResponse();
  15. if (fileReq.ContentLength > )
  16. fileResp.ContentLength = fileReq.ContentLength;
  17. stream = fileResp.GetResponseStream();
  18. var resp = Response;
  19. resp.ContentType = "application/octet-stream";
  20. //设置文件名
  21. resp.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
  22. resp.AddHeader("Content-Length", fileResp.ContentLength.ToString());
  23. int length;
  24. do
  25. {
  26. if (resp.IsClientConnected)
  27. {
  28. length = stream.Read(buffer, , bytesToRead);
  29. resp.OutputStream.Write(buffer, , length);
  30. resp.Flush();
  31. buffer = new Byte[bytesToRead];
  32. }
  33. else
  34. {
  35. length = -;
  36. }
  37. } while (length > );
  38. }
  39. finally
  40. {
  41. if (stream != null)
  42. {
  43. stream.Close();
  44. }
  45. }
  46. }

获取网络图片并转换为base64

  1. private string GetImgBase64(string imgUrl)
  2. {
  3. WebRequest request = WebRequest.Create(imgUrl);
  4. WebResponse response = request.GetResponse();
  5. Stream s = response.GetResponseStream();
  6. byte[] data = new byte[];
  7. int length = ;
  8. MemoryStream ms = new MemoryStream();
  9. while ((length = s.Read(data, , data.Length)) > )
  10. {
  11. ms.Write(data, , length);
  12. }
  13. ms.Seek(, SeekOrigin.Begin);
  14. return Convert.ToBase64String(ms.ToArray());
  15. }

判断请求来源

  1. public ActionResult DownloadApp()
  2. {
  3. //获取客服端请求源
  4. string agent = Request.UserAgent;
  5. string[] keywords = { "Android", "iPhone", "iPod", "iPad", "Windows Phone", "MQQBrowser" };
  6. // CloudWave.Framework.Core.Logging.Logging4net.WriteInfo(agent);
  7. //排除 Windows 桌面系统
  8. //if (!agent.Contains("Windows NT") || (agent.Contains("Windows NT") && agent.Contains("compatible; MSIE 9.0;")))
  9. var downloadurl = "";
  10. //判断是微信, 直接响应应用宝地址
  11. if (agent.ToLower().Contains("micromessenger"))
  12. {
  13. //获取配置信息
  14. }
  15. //安卓
  16. else if (agent.ToLower().Contains(keywords[]))
  17. {
  18.  
  19. }
  20. //苹果
  21. else if(agent.ToLower().Contains(keywords[].ToLower())|| agent.ToLower().Contains(keywords[].ToLower())
  22. || agent.ToLower().Contains(keywords[].ToLower()))
  23. {
  24.  
  25. }
  26. return Json(downloadurl);
  27. }

js encodeURI编码 后面解码

  1. var str1 = HttpUtility.UrlDecode(Keyword);
  2. var str2 = Server.HtmlDecode(Keyword);
  3. var str3 = Server.UrlDecode(Keyword);
  4. var str4 = Microsoft.JScript.GlobalObject.decodeURIComponent(Keyword);

参数渲染扩展类

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace System {
  8.  
  9. /// <summary>
  10. /// 参数渲染扩展类
  11. /// </summary>
  12. public static class LayoutRenderer {
  13.  
  14. /// <summary>
  15. /// 格式化模板参数替换参数项为对应的值的字符串表示
  16. /// str:模板字符串(例:"Hello {Text}")
  17. /// </summary>
  18. /// <param name="str">模板字符串(例:"Hello {Text}")</param>
  19. /// <param name="jsonValue">对应模板的参数值,json格式(例:"{\"Text\":\"World\"}")</param>
  20. /// <returns></returns>
  21. public static string FormatTemplate(this string str, string jsonValue) {
  22. var jObject = Newtonsoft.Json.JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(jsonValue); // (Newtonsoft.Json.Linq.JObject)req.Data;
  23. if (jObject != null) {
  24. string name = "", value = "";
  25. foreach (var item in jObject) {
  26. if (item.Value is Newtonsoft.Json.Linq.JValue) {
  27. name = item.Key;
  28. value = System.Web.HttpUtility.UrlDecode(item.Value.ToString());
  29. }
  30. str = str.Replace(string.Format("{0}{1}{2}", "{", name, "}"), value);
  31. }
  32. }
  33. return str;
  34. }
  35.  
  36. /// <summary>
  37. /// 格式化模板参数替换参数项为对应的值的字符串表示
  38. /// str:模板字符串(例:"Hello {Text}")
  39. /// </summary>
  40. /// <param name="str">模板字符串(例:"Hello {Text}")</param>
  41. /// <param name="objValue">对应模板的参数值对象实例</param>
  42. /// <returns></returns>
  43. public static string FormatTemplate<T>(this string str, T objValue) where T : new() {
  44. if (objValue != null) {
  45. var type = objValue.GetType();
  46. var properties = type.GetProperties();
  47. foreach (var item in properties) {
  48. // item.GetValue();
  49. var value = item.GetValue(objValue);
  50. if (value != null)
  51. str = str.Replace(string.Format("{0}{1}{2}", "{", item.Name, "}"), value.ToString());
  52. }
  53. }
  54. return str;
  55. }
  56.  
  57. /// <summary>
  58. /// 将传入的字符串中间部分字符替换成特殊字符
  59. /// </summary>
  60. /// <param name="value">需要替换的字符串</param>
  61. /// <param name="startLen">前保留长度</param>
  62. /// <param name="endLen">尾保留长度</param>
  63. /// <param name="replaceChar">特殊字符</param>
  64. /// <returns>被特殊字符替换的字符串</returns>
  65. public static string ReplaceWithSpecialChar(string value, int startLen = , int endLen = , char specialChar = '*')
  66. {
  67. try
  68. {
  69. int lenth = value.Length - startLen - endLen;
  70.  
  71. string replaceStr = value.Substring(startLen, lenth);
  72.  
  73. string specialStr = string.Empty;
  74.  
  75. for (int i = ; i < replaceStr.Length; i++)
  76. {
  77. specialStr += specialChar;
  78. }
  79.  
  80. value = value.Replace(replaceStr, specialStr);
  81. }
  82. catch (Exception)
  83. {
  84. return value;
  85. }
  86.  
  87. return value;
  88. }
  89. }
  90. }

c# 的一些基本操作或属性的更多相关文章

  1. 【日常操作记录】Asp.Net Core 的一些基本操作或属性

    用于记录在项目中使用到的方法.属性.操作,持续更新中 静态文件的使用 在项目中静态文件的使用需要在Startup中的Configure方法中增加: //使用静态文件 app.UseStaticFile ...

  2. 【操作记录】Asp.Net Core 的一些基本操作或属性

    用于记录在项目中使用到的方法.属性.操作,持续更新中 .net core 开源地址 图片上传: public async Task<IActionResult> Upload([FromS ...

  3. 深入理解javascript对象系列第二篇——属性操作

    × 目录 [1]查询 [2]设置 [3]删除[4]继承 前面的话 对于对象来说,属性操作是绕不开的话题.类似于“增删改查”的基本操作,属性操作分为属性查询.属性设置.属性删除,还包括属性继承.本文是对 ...

  4. JavaScript笔记01_基本操作

    目录 1. JS代码编写的位置 2. 为什么JavaScript中代码要以分号结束 3. 字面量和变量 4. 数据类型 5. 类型装换 6. ++a和a++ 7. 逻辑运算符 8. 相等运算符 9. ...

  5. Java 集合系列01之 总体框架

      Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:List列表.Set ...

  6. Java集合系列:-----------01集合的整体框架

    内容来自:http://www.cnblogs.com/skywang12345/p/3308498.html Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映 ...

  7. 用pywinauto进行win32应用程序的测试

    之前做win32应用测试时,用过很多大家耳熟成详的工具,接触pywinauto之前,对它的了解也不多,然而,随着对它了解的增多,发现它借助了python动态对象的能力,使得代码即便于书定,也便于阅读, ...

  8. Java 集合系列 01 总体框架

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  9. 《Genesis-3D开源游戏引擎-官方录制系列视频教程:基础操作篇》

    注:本系列教程仅针对引擎编辑器:v1.2.2及以下版本 G3D基础操作   第一课<G3D编辑器初探> G3D编辑器介绍,依托于一个复杂场景,讲解了场景视图及其基本操作,属性面板和工具栏的 ...

随机推荐

  1. MYSQL-不能创建表

    Can't create table '.\ticket\user_role.frm' (errno: 121) 语法是对的,但显示上面的错误 原因有三种 1.表名重复 2.以该名字命名的表之前创建过 ...

  2. 剑指offer :从尾到头打印链表

    题目描述: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解题思路: 链表的遍历只能从头向尾进行,要从尾到头输出,考虑用栈.先从头到尾遍历一次链表,同时将值进栈,再清空栈,同时将值 ...

  3. 【CS231N】3、Softmax分类器

    wiki百科:softmax函数的本质就是将一个K维的任意实数向量压缩(映射)成另一个K维的实数向量,其中向量中的每个元素取值都介于(0,1)之间. 一.疑问 二.知识点 1. softmax函数公式 ...

  4. 【TCP/IP详解 卷一:协议】第六章:DHCP 和自动配置

    简介 为了使用 TCP/IP 协议族,每台主机or路由器都需要一定的配置信息: IP地址 子网掩码 广播地址 路由或转发表 DNS 协议配置方法: 手动 通过使用网络服务来获得 使用一些算法来自动确定 ...

  5. mongo学习1 (转)

    关于mongodb的好处,优点之类的这里就不说了,唯一要讲的一点就是mongodb中有三元素:数据库,集合,文档,其中“集合” 就是对应关系数据库中的“表”,“文档”对应“行”. 一: 下载 上Mon ...

  6. maven在eclipse上的配置

    1,安装maven,配置MAVEN_HOME 和 bin Path环境变量. 2,配置maven setting文件 <mirror>      <id>alimirrorId ...

  7. Java-JDBC.mysql 工具类 读取本地文件配置

    引用 mysql-connector-jav 的jar 配置文件为  database.propertties .  格式如下 driverClass=com.mysql.jdbc.Driver ur ...

  8. Hystrix 容错处理

    目录 雪崩效应 容错的基本思想 什么是Hystrix 简单使用 消费端使用Hystrix 注解开启 改造消费方法 @HystrixCommand 详细配置 Hystrix线程隔离策略与传播上下文 Hy ...

  9. springmvc+mybatis 处理时间

    项目结构: 一.数据库中time的字段为datetime1. 数据库设计如图 2. addNews.jsp <%@ page language="java" contentT ...

  10. Python语言算法的时间复杂度和空间复杂度

    算法复杂度分为时间复杂度和空间复杂度. 其作用: 时间复杂度是指执行算法所需要的计算工作量: 而空间复杂度是指执行这个算法所需要的内存空间. (算法的复杂性体现在运行该算法时的计算机所需资源的多少上, ...