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
posted @ 2020-03-31 16:56  Vanling  阅读(2405)  评论(0编辑  收藏  举报