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# 的一些基本操作或属性的更多相关文章

  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. IT职业道路的苦与甜

    每当有人问起你学的是什么专业啊?学的怎么样啊?好不好学啊?等等一些类似的问题.我都会默默的说一句,会者不难,难者不会.当然现在的我还处于菜鸟级别,不过我相信在不久后的一天我一定会脱离菜鸟的行列,然后挺 ...

  2. 自己对git的认识。

    刚打开这个软件的网页,只能用一个字来形容,蒙,蒙,蒙,重要的事要说三遍,全英文的,这到底是什么东西,连注册都得慢慢翻译,这英语基础实在是太差劲了. 看了老师推荐的对Git使用介绍,由于之前对这个软件的 ...

  3. android 的helloworld没跑起来 原因

    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com. ...

  4. mybatis连接数据库的几种方式

    1.可以通过配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="ht ...

  5. 对JAVA RMI的认识

    RMI的定义 RPC (Remote Procedure Call):远程方法调用,用于一个进程调用另一个进程中的过程,从而提供了过程的分布能力. RMI(Remote Method Invocati ...

  6. git add -A 和 git add . 的区别

    git add -A和 git add .   git add -u在功能上看似很相近,但还是存在一点差别 git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文 ...

  7. Windows 10 正式版原版ISO镜像

    Win10正式版32位简体中文版(含家庭版.专业版)文件名: cn_windows_10_multiple_editions_x86_dvd_6846431.isoSHA1:21B824F402927 ...

  8. [转帖]HTTPS的简单说明

    HTTPS(全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版,即 HTT ...

  9. Cryptography Reloaded UVALive - 4353(BigInteger)

    写写式子就出来了方程.. 然后解方程..不过数很大..用Java就好啦.. 就不贴呃的代码了...贴别人的..https://blog.csdn.net/qq_15714857/article/det ...

  10. git gitosis 添加项目

    example: 1, user@my-test:~/perl_src$ git inituser@my-test:~/perl_src$ git add .user@my-test:~/perl_s ...