C# 发EDM
来源:互联网 发布:youxi域名 编辑:程序博客网 时间:2024/06/07 00:06
最近公司需要写了一个EDM,基本功能可以,暂时还没有优化。压缩的还没测试。
#region 发EDM #region 创建CSV文件 public static void CreateCSV(DataTable dt, string fileName) { FileStream fs = new FileStream(fileName, System.IO.FileMode.Create, System.IO.FileAccess.Write); StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default); string data = ""; //写出列名称 for (int i = 0; i < dt.Columns.Count; i++) { data += dt.Columns[i].ColumnName.ToString(); if (i < dt.Columns.Count - 1) data += ","; } sw.WriteLine(data); //写出各行数据 for (int i = 0; i < dt.Rows.Count; i++) { data = ""; for (int j = 0; j < dt.Columns.Count; j++) { data += dt.Rows[i][j].ToString(); if (j < dt.Columns.Count - 1) data += ","; } sw.WriteLine(data); } sw.Close(); fs.Close(); fs.Dispose(); } #endregion #region 压缩CSV文件 /// <summary> /// 压缩单个文件 /// </summary> /// <param name="fileToZip">要压缩的文件</param> /// <param name="zipedFile">压缩后的文件全名</param> /// <param name="compressionLevel">压缩程度,范围0-9,数值越大,压缩程序越高</param> /// <param name="blockSize">分块大小</param> public static void ZipFile(string fileToZip, string zipedFile, int compressionLevel, int blockSize) { FileStream streamToZip = new FileStream(fileToZip, FileMode.Open, FileAccess.Read); FileStream zipFile = File.Create(zipedFile); ZipOutputStream zipStream = new ZipOutputStream(zipFile); ZipEntry zipEntry = new ZipEntry(fileToZip); zipStream.PutNextEntry(zipEntry); zipStream.SetLevel(compressionLevel); byte[] buffer = new byte[blockSize]; int size = streamToZip.Read(buffer, 0, buffer.Length); zipStream.Write(buffer, 0, size); try { while (size < streamToZip.Length) { int sizeRead = streamToZip.Read(buffer, 0, buffer.Length); zipStream.Write(buffer, 0, sizeRead); size += sizeRead; } } catch (Exception ex) { GC.Collect(); throw ex; } zipStream.Finish(); zipStream.Close(); streamToZip.Close(); GC.Collect(); } #endregion #region 发送csv文件 public static string UpLoadFile(string filePath) { string url = "接口url"; string fileName = Path.GetFileName(filePath); string responseContent; var memStream = new MemoryStream(); // 边界符 var boundary = "---------------" + DateTime.Now.Ticks.ToString("x"); // 开始边界符 var beginBoundary = Encoding.ASCII.GetBytes("--" + boundary + "\r\n"); // 最后的结束符 var endBoundary = Encoding.ASCII.GetBytes("--" + boundary + "--\r\n"); //文件流 var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read); // WebRequest设置属性 var webRequest = (HttpWebRequest)WebRequest.Create(url); webRequest.Method = "POST"; webRequest.ContentType = "multipart/form-data; boundary=" + boundary; //写入开始符 memStream.Write(beginBoundary, 0, beginBoundary.Length); // 写入文件标题 const string filePartHeader = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n" + "Content-Type: application/vnd.ms-excel\r\n\r\n"; var header = string.Format(filePartHeader, "customerFile", fileName); var headerbytes = Encoding.UTF8.GetBytes(header); memStream.Write(headerbytes, 0, headerbytes.Length); //写入文件流 var buffer = new byte[1024]; int bytesRead; // =0 while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0) { memStream.Write(buffer, 0, bytesRead); } // 写入最后的结束边界符 memStream.Write(endBoundary, 0, endBoundary.Length); webRequest.ContentLength = memStream.Length; var requestStream = webRequest.GetRequestStream(); memStream.Position = 0; var tempBuffer = new byte[memStream.Length]; memStream.Read(tempBuffer, 0, tempBuffer.Length); memStream.Close(); requestStream.Write(tempBuffer, 0, tempBuffer.Length); requestStream.Close(); var httpWebResponse = (HttpWebResponse)webRequest.GetResponse(); using (var httpStreamReader = new StreamReader(httpWebResponse.GetResponseStream(), Encoding.GetEncoding("utf-8"))) { responseContent = httpStreamReader.ReadToEnd(); } fileStream.Close(); httpWebResponse.Close(); webRequest.Abort(); JObject jo = JObject.Parse(responseContent); string[] values = jo.Properties().Select(item => item.Value.ToString()).ToArray(); return values[0]; } #endregion #region csv文件转服务器数据库 public static string csvToDataBase(string csvPath) { string postDataStr = GetpostDataStr(csvPath); string url = "接口url"; string jobid = GetRadicaData(url, postDataStr); return jobid; } public static string GetpostDataStr(string csvPathpar) { DataTable dtmapping = new DataTable(); dtmapping.Columns.Add("column", typeof(string)); dtmapping.Columns.Add("propId", typeof(string)); DataRow dr; dr = dtmapping.NewRow(); dr["column"] = 0; dr["propId"] = "客户提供"; dtmapping.Rows.Add(dr); dr = dtmapping.NewRow(); dr["column"] = 1; dr["propId"] = "客户提供ID"; dtmapping.Rows.Add(dr); dr = dtmapping.NewRow(); dr["column"] = 2; dr["propId"] = "客户提供ID"; dtmapping.Rows.Add(dr); dr = dtmapping.NewRow(); dr["column"] = 3; dr["propId"] = "57a29bb147b8842f2cea6920"; dtmapping.Rows.Add(dr); dr = dtmapping.NewRow(); dr["column"] = 4; dr["propId"] = "客户提供ID"; dtmapping.Rows.Add(dr); string[] arrtagids = new string[] { }; string[] arrtagnames = new string[] { "test123456" }; CSVObjecrt csvobject = new CSVObjecrt { path = csvPathpar, operation = "replace", tagids = arrtagids, tagNames = arrtagnames, fieldMapping = dtmapping }; var json = JsonConvert.SerializeObject(csvobject); return json.ToString(); } #endregion #region 调用接口返回json字符串 public static string GetData(string url, string postData) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/json"; //request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr); Stream myRequestStream = request.GetRequestStream(); StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("utf-8")); myStreamWriter.Write(postData); myStreamWriter.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); JObject jo = JObject.Parse(retString); string[] values = jo.Properties().Select(item => item.Value.ToString()).ToArray(); return values[0]; } #endregion #region 发短信 /// <summary> /// 调用短信接口 /// </summary> public static void sendSMSTask(DataTable dtcampaign) { int result = sendSMSt("手机号", "短信内容", "ID", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); } /// <summary> /// 发送短信 /// </summary> /// <param name="mobile">收短信人手机</param> /// <param name="content">短信内容</param> /// <param name="misc"></param> /// <param name="time"></param> /// <returns></returns> public static int sendSMSt(String mobile, String content, String misc, String time) { int iR = 1; string url = "接口url"; string postStrTpl = "username={0}&password={1}&content={2}&mobile={3}&batchID={4}&senddate={5}"; string username = "用户名"; string pwd = "密码"; UTF8Encoding encoding = new UTF8Encoding(); //统一任务下的ID一样 byte[] postData = encoding.GetBytes(string.Format(postStrTpl, username, pwd, content, mobile, misc, time)); HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url); myRequest.Method = "POST"; myRequest.ContentType = "application/x-www-form-urlencoded"; myRequest.ContentLength = postData.Length; Stream newStream = myRequest.GetRequestStream(); // Send the data. newStream.Write(postData, 0, postData.Length); newStream.Flush(); newStream.Close(); HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); if (myResponse.StatusCode == HttpStatusCode.OK) { StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); string tmp = reader.ReadToEnd(); if (tmp == "0") iR = 0; } else { //访问失败 } return iR; } #endregion #endregion
0 0
- C# 发EDM
- c#如何发邮件?
- C#发短信
- 发短信C#代码
- C#发邮件
- C# 发邮件
- C#实现发邮件
- c#异步发邮件
- C# 发用邮件
- C# 发邮件
- C# 发邮件
- C#自动发邮件
- C#发邮件
- c# 接发邮件
- C# 发HTTP请求
- C#发邮件
- C#发邮件
- C# 发HTTP请求
- Go-数组
- Android Studio Flavors详解
- Android系统内置应用更新或升级后被还原的原因
- supervisor 进程管理
- MATLAB BP神经网络用法的总结(试用于初学者)
- C# 发EDM
- vi编译器
- Java并发编程:线程池的使用
- Android手机的目录详解以及数据的存储(完善中)
- IOS 仿淘宝购物列表一键TOP置顶,小功能,挺实用
- JQuery基本语法
- 网站架构消息队列小议
- 2014年首届CCF软件能力认证试题第一题 .
- sql server中常用函数集锦(整理)