文件与数组(baseBase64)相互转化

文件与数组(baseBase64)相互转化

第一部分 Base64转文件代码

csharp 复制代码
    public void SaveDocument(string path)
    {
        string sFilePath = "服务器文件路径" + "\\path";	//创建路径文件夹
        string sFileName = "文件名字"+ "." + document.imageFormat.ToLower();	//这里的imageFormat就是文件类型
        sFileName = sFilePath + "\\" + sFileName;
        //路径不存在,则创建路径
        if (!Directory.Exists(sFilePath))
        {
            Directory.CreateDirectory(sFilePath);
        }
		//如果文件已经存在,则删除文件
        if (System.IO.File.Exists(sFileName))
        {
            System.IO.File.Delete(sFileName);
        }
      	//注意:文件直接转base64前面会带有"data:application/pdf;base64,"前缀,需要去掉。
		byte[] DocBytes = Convert.FromBase64String(document.content);
		//文件流创建文件内容
        FileStream fs = new FileStream(sFileName, FileMode.CreateNew);
        BinaryWriter bw = new BinaryWriter(fs);
        bw.Write(DocBytes, 0, DocBytes.Length);
        bw.Close();
        fs.Close();
    }

第二部分 本地文件转base64

csharp 复制代码
  //文件全路径:fileName
    public string DocumentToBase64Str(string fileName)
    {
            FileStream filestream = new FileStream(fileName, FileMode.Open);

            byte[] bt = new byte[filestream.Length];
            //调用read读取方法
            filestream.Read(bt, 0, bt.Length);
            string base64Str = Convert.ToBase64String(bt);
            filestream.Close();
            return base64Str;
    }

第三部分 将对象转换为byte数组

csharp 复制代码
public static byte[] Object2Bytes(object obj)
{
    byte[] buff;
    using (MemoryStream ms = new MemoryStream())
    {
        IFormatter iFormatter = new BinaryFormatter();
        iFormatter.Serialize(ms, obj);
        buff = ms.GetBuffer();
    }
    return buff;
}

第四部分 将byte数组转换成对象

csharp 复制代码
public static object Bytes2Object(byte[] buff)
{
    object obj;
    using (MemoryStream ms = new MemoryStream(buff))
    {
        IFormatter iFormatter = new BinaryFormatter();
        obj = iFormatter.Deserialize(ms);
    }
    return obj;
}

以上都是基于本地文件的转换

第五部分 将公网(服务器)转byte[]

第五和第六部分需要引入以下命名空间

csharp 复制代码
using System.Collections.Generic;   //list
using System.Net;   //HttpWebRequest、HttpWebResponse
using System.IO;
csharp 复制代码
        private byte[] GetUrlMemoryStream(string path)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(path);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream responseStream = response.GetResponseStream();

            List<byte> btlst = new List<byte>();
            int b = responseStream.ReadByte();
            while (b > -1)
            {
                btlst.Add((byte)b);
                b = responseStream.ReadByte();
            }
            byte[] bts = btlst.ToArray();
            return bts;
        }

第六部分 将外网的文件转base64 (方法类似于第五部分)

csharp 复制代码
 private byteToBase64 GetUrlMemoryStream(string path)
        {

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(path);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream responseStream = response.GetResponseStream();

            List<byte> btlst = new List<byte>();
            int b = responseStream.ReadByte();
            while (b > -1)
            {
                btlst.Add((byte)b);
                b = responseStream.ReadByte();
            }
            byte[] bts = btlst.ToArray();
            string base64Str = Convert.ToBase64String(bt);
            return base64Str ;
        }
相关推荐
“抚琴”的人16 小时前
【机械视觉】C#+VisionPro联合编程———【六、visionPro连接工业相机设备】
c#·工业相机·visionpro·机械视觉
FAREWELL0007518 小时前
C#核心学习(七)面向对象--封装(6)C#中的拓展方法与运算符重载: 让代码更“聪明”的魔法
学习·c#·面向对象·运算符重载·oop·拓展方法
CodeCraft Studio18 小时前
Excel处理控件Spire.XLS系列教程:C# 合并、或取消合并 Excel 单元格
前端·c#·excel
勘察加熊人20 小时前
forms实现连连看
c#
hvinsion20 小时前
PPT助手:一款集计时、远程控制与多屏切换于一身的PPT辅助工具
c#·powerpoint·ppt·ppt助手·ppt翻页
weixin_3077791321 小时前
使用C#实现从Hive的CREATE TABLE语句中提取分区字段名和数据类型
开发语言·数据仓库·hive·c#
时光追逐者1 天前
在 Blazor 中使用 Chart.js 快速创建数据可视化图表
开发语言·javascript·信息可视化·c#·.net·blazor
与火星的孩子对话1 天前
Unity3D开发AI桌面精灵/宠物系列 【三】 语音识别 ASR 技术、语音转文本多平台 - 支持科大讯飞、百度等 C# 开发
人工智能·unity·c#·游戏引擎·语音识别·宠物
response_L1 天前
国产系统统信uos和麒麟v10在线打开word给表格赋值
java·c#·word·信创·在线编辑
MasterNeverDown1 天前
Swagger2Md:让WebAPI文档生成变得轻松高效
c#