JS上傳Base64和后台接收Base64編碼數據轉圖片或文件保存


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM