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
原创粉丝点击