DataTableToCSV再转 byte[]再转MemoryStream(上传阿里云)

 /// <summary>
        /// DataTableToCSV
        /// </summary>
        /// <param name="table"></param>
        /// <returns></returns>
        public static string ToCSV( DataTable table)
        {
            var result = new StringBuilder();
            for (int i = 0; i < table.Columns.Count; i++)
            {
                result.Append(table.Columns[i].ColumnName);
                result.Append(i == table.Columns.Count - 1 ? "\n" : ",");
            }

            foreach (DataRow row in table.Rows)
            {
                for (int i = 0; i < table.Columns.Count; i++)
                {
                    result.Append(row[i].ToString());
                    result.Append(i == table.Columns.Count - 1 ? "\n" : ",");
                }
            }

            return result.ToString();
        }
       

        public string FileSaveExcelAliyunOSS(DataTable dt, string fileName, string extension)
        {
            #region wps可用
            //StringBuilder sb = new StringBuilder();
            //for (int k = 0; k < dt.Columns.Count; k++)
            //{
            //    sb.Append(dt.Columns[k].ColumnName.ToString() + "\t");
            //}
            //sb.Append(Environment.NewLine);

            //for (int i = 0; i < dt.Rows.Count; i++)
            //{
            //    for (int j = 0; j < dt.Columns.Count; j++)
            //    {
            //        sb.Append(dt.Rows[i][j].ToString() + "\t");
            //    }
            //    sb.Append(Environment.NewLine);//每写一行数据后换行
            //}

            //byte[] array = Encoding.Default.GetBytes(sb.ToString());
            //MemoryStream stream = new MemoryStream(array);   
            #endregion
            byte[] array = Encoding.Default.GetBytes(ToCSV(dt));
            MemoryStream stream = new MemoryStream(array);  

            string FilePath = "";
            //上传到阿里云  
            using (stream)//转成Stream流  
            {
                string md5 = OssUtils.ComputeContentMd5(stream, stream.Length);
                string FileName = Convert.ToString(Guid.NewGuid()).Replace("-", "") + extension;//文件名=文件名+当前上传时间  
                FilePath = fileName + "/" + Convert.ToString(DateTime.Now.Year) + "/" + Convert.ToString(DateTime.Now.Month) + "/" + FileName;//云文件保存路径  

                try
                {
                    //初始化阿里云配置--外网Endpoint、访问ID、访问password  
                    OssClient aliyun = new OssClient(endpoint, accessKeyId, accessKeySecret);

                    //将文件md5值赋值给meat头信息,服务器验证文件MD5  
                    var objectMeta = new ObjectMetadata
                    {
                        ContentMd5 = md5,
                        ContentType = "application/octet-stream",
                    };
                    //文件上传--空间名、文件保存路径、文件流、meta头信息(文件md5) //返回meta头信息(文件md5)  
                    PutObjectResult por = aliyun.PutObject(BucketName, FilePath, stream, objectMeta);
                    string text = por.ETag;

                }
                catch (Exception e)
                {
                    ICE.Core.LogHelper.ErrorLog(log, string.Format("图片上传OSS出错了:{0}", Convert.ToString(e.Message)));
                    FilePath = "";
                }
            }
            return FilePath;
        }

  

猜你喜欢

转载自www.cnblogs.com/fyssl/p/10430593.html