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