c#用Base64实现文件上传的方法

发布时间:2020-08-04 13:34:39 作者:小猪
来源:亿速云 阅读:384

这篇文章主要讲解了c#用Base64实现文件上传的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

    Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,它是一种基于64个可打印字符来表示二进制数据的方法。

    使用base64进行文件上传的具体流程是:前台使用js将文件转换为base64格式,后台通过高级编程语言,将base64格式的文件,转换为原文件。下面就来演示一下,C#语言配合js,如何实现图片的base64格式上传与解析保存。

    首先看一下前台是如何将文件读取到的,请先看如下js代码:

var DataforUp = "";
 var reader = new FileReader(); //声明文件读取对象
//声明文件读取完毕后调用的方法,通过this.result获取到转换的数据对象
 reader.onload = function () {
  DataforUp = this.result;
 };
//当用户选择文件后,进行转换数据的操作
 $("#file").change(function () {
  reader.readAsDataURL(this.files[0]);
 });

    文件的读取,需要借助于FileReader这个对象,DataforUp用于保存base64源码。#file该id对应文件选择标签。

    FileReader对象有个onload事件,当读取文件的时候(或者说调用readAsDataURL方法后),会触发此事件,base64转换的源码就存在于它的result属性中。

    下面具体解释一下上述代码:

    当用户选择文件后,使用FileReader对象读取文件,读取后自动转换为base64格式,然后触发该对象的onload方法,将转换后的base64源码保存下来。

    这样我们就拿到了base64格式的文件源码,通过ajax,就可以将文件发送到后台。

    接下来看一下后台是如何解析并保存的:

public string SaveImgBaseSixFour(string img,string obj)
{
 if(img==null){
 return "数据为空";
 }
 string result = img;
 int index = -1;
 //判断是不是base64文件类型
 index = img.IndexOf("base64,");
 if (index != -1)
 {
  index += 7;
 //将数据转换为二进制字节数组
 var imgbit = Convert.FromBase64String(img.Substring(index));
 //生成文件名
 string imgname = DateTime.Now.ToString("yyyyMMddHHmmss") + ".jpg";
 //保存图片
 using (Image image=Image.FromStream(new MemoryStream(imgbit)))
  {
   image.Save(_rootPath+imgname,ImageFormat.Jpeg);
  }
 }
}

    base64源码的基本模型是 data:image/png;base64,...文件码...=

    data标识文件类型,紧接着base64,开头的文件源码最后以=结束,所以解析的时候要去掉开头这一部分,本案例图片扩展名是写死的,也可以通过base64文件头去获取图片的扩展名,此处不再详细介绍。

看完上述内容,是不是对c#用Base64实现文件上传的方法有进一步的了解,如果还想学习更多内容,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. base64实现解码转化的方法
  2. C# asp.net实现文件上传

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

base64

上一篇:深入理解 SQL Server 2008 的锁机制

下一篇:Cacti如何实现电话告警

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》