上次给大家推荐了《推荐一个不到2MB的C#开发工具箱,集成了上千个常用操作类》,受到大家的一致欢迎,这次再给大家推荐一个常用代码集合,这个库虽然与之前那个只有小部分重复,功能齐全,大家可以整合一起使用。
项目简介
这个代码集合,都是一些常用的功能性代码,每个类都是独立、没有相互依赖,可以单独使用。大家可以根据项目,提取相应的类,避免重复造轮子。
功能列表
===========
Chart图形:柱状图、饼图、条形图
加密解密:DES、MDG、RSA、Hash
上传下载:调用API文件上传、下载、保存
视频转换:asf, avi, mpg, 3gp, mov相互转换
阿里云:阿里直播、OSS相关API封装。
FTP:链接、文件上传、文件下载、文件夹获取、文件获取、修改文件名称、获取文件信息、切换目录
条形码:39、13
图片:收略图、图片/文字水印、反色、浮雕、拉伸、滤镜、翻转、压缩、黑白、上传下载等操作
网络:Http请求、IP获取、邮件发送、Socket操作、客户度信息获取
Cookie&Session:操作辅助
Excel:文件读取、编辑、格式转换、查询
JSON:List、对象、DataSet与Json相互转换。
XML:文件读取、保存、节点增、删、改,节点属性管理。
二维码:二维码图片生成、图片大小设置
汉字与拼音:相互转换
缓存:系统缓存设置、修改、删除、查询
计划任务:Quartz.NET
网络安全:脚本攻击、授权认证
文件:读写文件、删除、追加文件、后缀名、目录、文件属性等
验证码:数字、字母与数字、字母随机
其他:字符串类型转换、配置文件操作、日志、时间戳、随机数、线程、正则表达式
技术架构
开发工具:VisualStudio
SDK:.Net Framework4.5
项目结构
部分功能代码
**阿里Oss上传文件
**
/// <summary>
/// 上传文件
/// </summary>
/// <param name="fileName">文件名:/images/demo.jpg</param>
/// <param name="fileStream"></param>
public void Upload(string fileName, Stream fileStream)
{
OssClient ossClient = new OssClient(EndPoint, AccessKeyID, AccessKeySecret);
ObjectMetadata metadata = new ObjectMetadata();
//根据文件名设置ContentType
metadata.ContentType = GetContentType(fileName);
string key = "MerLogo/" + fileName;
fileStream.Seek(0, SeekOrigin.Begin);
PutObjectResult result = ossClient.PutObject(BucketName, key, fileStream, metadata);
}
二维码生成
/// <summary>
/// 生成二维码图片
/// </summary>
/// <param name="str">字符串</param>
/// <param name="size">图片大小</param>
/// <param name="path">图片位置
/// 例如 /abc/abc/
/// </param>
/// <returns>返回生成的二维码图片路径</returns>
public string Create(string str, int size, string path)
{
try
{
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
//设置编码模式
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
//设置编码测量度
qrCodeEncoder.QRCodeScale = size;
//设置编码版本
qrCodeEncoder.QRCodeVersion = 8;
//设置编码错误纠正
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
System.Drawing.Image image = qrCodeEncoder.Encode(str);
string filename = "~" + path + Guid.NewGuid() + ".jpg";
image.Save(HttpContext.Current.Request.MapPath(filename));
return filename.Replace("~", "");
}
catch (Exception)
{
return "";
}
}
RSA的加密函数
//##############################################################################
//RSA 方式加密
//说明KEY必须是XML的行式,返回的是字符串
//在有一点需要说明!!该加密方式有 长度 限制的!!
//##############################################################################
//RSA的加密函数 string
public string RSAEncrypt(string xmlPublicKey,string m_strEncryptString )
{
byte[] PlainTextBArray;
byte[] CypherTextBArray;
string Result;
RSACryptoServiceProvider rsa=new RSACryptoServiceProvider();
rsa.FromXmlString(xmlPublicKey);
PlainTextBArray = (new UnicodeEncoding()).GetBytes(m_strEncryptString);
CypherTextBArray = rsa.Encrypt(PlainTextBArray, false);
Result=Convert.ToBase64String(CypherTextBArray);
return Result;
}
FTP上传文件
/// <summary>
/// 上传
/// </summary>
public void Upload(string filename)
{
FileInfo fileInf = new FileInfo(filename);
FtpWebRequest reqFTP;
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + fileInf.Name));
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
reqFTP.KeepAlive = false;
reqFTP.UseBinary = true;
reqFTP.ContentLength = fileInf.Length;
int buffLength = 2048;
byte[] buff = new byte[buffLength];
int contentLen;
FileStream fs = fileInf.OpenRead();
try
{
Stream strm = reqFTP.GetRequestStream();
contentLen = fs.Read(buff, 0, buffLength);
while (contentLen != 0)
{
strm.Write(buff, 0, contentLen);
contentLen = fs.Read(buff, 0, buffLength);
}
strm.Close();
fs.Close();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
柱状图
/// <summary>
/// 柱形图
/// </summary>
/// <returns></returns>
public string CreateColumn()
{
Microsoft.Office.Interop.Owc11.ChartSpace objCSpace = new Microsoft.Office.Interop.Owc11.ChartSpaceClass();//创建ChartSpace对象来放置图表
Microsoft.Office.Interop.Owc11.ChChart objChart = objCSpace.Charts.Add(0);//在ChartSpace对象中添加图表,Add方法返回chart对象
//指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到//Microsoft.Office.Interop.OWC.ChartChartTypeEnum
objChart.Type = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypeColumnClustered;
//指定图表是否需要图例
objChart.HasLegend = true;
//标题
objChart.HasTitle = true;
objChart.Title.Caption = _title;
// objChart.Title.Font.Bold=true;
// objChart.Title.Font.Color="blue";
#region 样式设置
// //旋转
// objChart.Rotation = 360;//表示指定三维图表的旋转角度
// objChart.Inclination = 10;//表示指定三维图表的视图斜率。有效范围为 -90 到 90
//背景颜色
// objChart.PlotArea.Interior.Color = "red";
//底座颜色
// objChart.PlotArea.Floor.Interior.Color = "green";
//
// objChart.Overlap = 50;//单个类别中标志之间的重叠量
#endregion
//x,y轴的图示说明
objChart.Axes[0].HasTitle = true;
objChart.Axes[0].Title.Caption = "X :类别";
objChart.Axes[1].HasTitle = true;
objChart.Axes[1].Title.Caption = "Y :数量";
//添加一个series
Microsoft.Office.Interop.Owc11.ChSeries ThisChSeries = objChart.SeriesCollection.Add(0);
//给定series的名字
ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimSeriesNames,
Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), SeriesName);
//给定分类
ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimCategories,
Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strCategory);
//给定值
ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimValues,
Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strValue);
Microsoft.Office.Interop.Owc11.ChDataLabels dl = objChart.SeriesCollection[0].DataLabelsCollection.Add();
dl.HasValue = true;
// dl.Position=Microsoft.Office.Interop.Owc11.ChartDataLabelPositionEnum.chLabelPositionOutsideEnd;
string filename = DateTime.Now.ToString("yyyyMMddHHmmssff") + ".gif";
string strAbsolutePath = _phaysicalimagepath + "\\" + filename;
objCSpace.ExportPicture(strAbsolutePath, "GIF", _picwidth, _pichight);//输出成GIF文件.
return filename;
}
源码地址: