Base64数据类型有:
Data URI scheme类型 PDF
data:,文本数据
data:text/plain,文本数据
data:text/html,HTML代码
data:text/html;base64,base64编码的HTML代码
data:text/css,CSS代码
data:text/css;base64,base64编码的CSS代码
data:text/javascript,Javascript代码
data:text/javascript;base64,base64编码的Javascript代码
data:image/gif;base64,base64编码的gif图片数据
data:image/png;base64,base64编码的png图片数据
data:image/jpeg;base64,base64编码的jpeg图片数据
data:image/x-icon;base64,base64编码的icon图片数据
前端JS提交数据到后端
//原生post //1创建一个xhr对象 var xhr = new XMLHttpRequest(); //2监听状态的改变 xhr.onreadystatechange = function () { } //3打开一个链接 xhr.open('post', 'http://localhost:64575/WebService2.asmx/upbase64file', true); //3.5 修改请求消息头部 xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); //4发送数据 xhr.send('files=' + "data:image/jpg;base64," + value); xhr.onreadystatechange = function () { //当状态为4的时候,执行以下操作 if (xhr.readyState == 4) { try { alert(xhr.responseText.length); } catch (e) { alert('你访问的页面出错了'); }; }; };
提交的数据大于4M要改配置文件的 maxRequestLength="10240" 这个是设置文件大小
<system.web> <compilation debug="true" strict="false" explicit="true" targetFramework="4.5"/> <httpRuntime targetFramework="4.5" maxRequestLength="10240"/> </system.web>
后端接收数据并且保存,C#代码,后端处理非纯base64数据下,分割字符串获取到纯数据。如果纯数据下不用字符串分割获取。
public string upbase64file() { try { string file = HttpContext.Current.Request.Form("files"); string hz = file.Split(',')(0).Split(';')(0).Split('/')(1); string[] str = file.Split(','); string dummyData = str[1].Trim().Replace("%", "").Replace(",", "").Replace(" ", "+"); if (dummyData.Length % 4 > 0) dummyData = dummyData.PadRight(dummyData.Length + 4 - dummyData.Length % 4, '='); byte[] imageBytes = Convert.FromBase64String(dummyData); System.IO.MemoryStream MfileStream = new System.IO.MemoryStream(imageBytes); string fpath = @"C:\Users\anywell\Desktop\下载的啊\" + DateTime.Now.ToString("yyMMddhhmmss") + "." + hz; System.IO.FileStream fs = new System.IO.FileStream(fpath, System.IO.FileMode.Create, System.IO.FileAccess.Write); fs.Write(MfileStream.ToArray(), 0, MfileStream.Length); fs.Close(); MfileStream.Close(); return "Hello YES" + fpath; } catch (Exception ex) { return "Hello NO"; } }
后端接收数据并且保存,VB.net代码
Public Function upbase64file() As String Try Dim file As String = HttpContext.Current.Request.Form("files") Dim hz As String = file.Split(","c)(0).Split(";"c)(0).Split("/"c)(1) Dim str As String() = file.Split(","c) Dim dummyData As String = str(1).Trim().Replace("%", "").Replace(",", "").Replace(" ", "+") If dummyData.Length Mod 4 > 0 Then dummyData = dummyData.PadRight(dummyData.Length + 4 - dummyData.Length Mod 4, "="c) End If Dim imageBytes As Byte() = Convert.FromBase64String(dummyData) Dim MfileStream As IO.MemoryStream = New IO.MemoryStream(imageBytes) Dim fpath As String = "C:\Users\anywell\Desktop\下载的啊\" & DateTime.Now.ToString("yyMMddhhmmss") & "." & hz Dim fs As New IO.FileStream(fpath, IO.FileMode.Create, IO.FileAccess.Write) fs.Write(MfileStream.ToArray(), 0, MfileStream.Length) fs.Close() MfileStream.Close() Return "Hello YES" & fpath Catch ex As Exception Return "Hello NO" End Try End Function
base64