FromBase64String 输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符

js前台:

 <input id="upload_img_input" v-on:change="onFileChange" type="file"  multiple/>

onFileChange(e) {
                var files = e.target.files || e.dataTransfer.files;
                if (!files.length)return;
                this.createImage(files);
            },
            createImage(file) {
                if(typeof FileReader===‘undefined‘){
                    alert(‘您的浏览器不支持图片上传,请升级您的浏览器‘);
                    return false;
                }
                var image = new Image();
                var vm = this;
                var leng=file.length;
                for(var i=0;i<leng;i++){
                    var reader = new FileReader();
                    reader.readAsDataURL(file[i]);
                    reader.onload =function(e){
                        vm.images=e.target.result;
                    };
                }
            }

1.上面代码将图片生成base64的字符串,该字符串以分号切割 例如这样的格式 "data:image/png;base64,iVBORw0KGgo.............."

该字符串的第一部分"data:image/png;base64" 是代表该Base64字符串对应的原始类型,第二部分是该文件生成的内容

2.在C#语言的后台 我们直接获取该字符串,并对其分割转化为图片,注意如不分割 FromBase64String 方法会报错,提示输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符。所以我们只取第二部分的内容出来转化就好了,因为第一部分包含着文件格式

 public JsonResult PDUploadImage(string img)
        {
            string error = "";
            SaveImage(@"C:\Users\JUNON37\Desktop\Pictures\123", img, ref error);
            return Json("", JsonRequestBehavior.AllowGet);
        }
private bool SaveImage(string file_name, string img_string, ref string error)
       {
            try
            {
                string[] img_array = img_string.Split(‘,‘);
                byte[] arr = Convert.FromBase64String(img_array[1]);
                using (MemoryStream ms = new MemoryStream(arr))
                {
                    Bitmap bmp = new Bitmap(ms);
                    if (img_array[0].ToLower() == "data:image/jpeg;base64")
                    {
                        bmp.Save(file_name + ".jpg");
                    }
                    else if (img_array[0].ToLower() == "data:image/png;base64")
                    {
                        bmp.Save(file_name + ".png");
                    }
                    else
                    {
                        error = "不支持该文件格式。";
                        return false;
                    }

                }
            }
            catch (Exception ex)
            {
                error = "生成图片发生错误。" + ex.ToString();
                return false;
            }
            return true;
        }

这样就好了

时间: 2024-08-25 16:59:36

FromBase64String 输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符的相关文章

Base64 报错 的解决办法 (Base-64 字符数组或字符串的长度无效。, 输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符。)

Base64 报错 的解决办法, 报错如下:1. FormatException: The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or a non-white space character among the padding characters. ]    System.Convert.FromBase64Str

(转)C# :base的用法(冒号后面的base)

c# 中关于: base()用法,在此记录一下,方便查阅 1.this是标识当前资源对象的,而base是基于父级的. 2.base发挥了期灵魂级的作用--多态 3.base子类可以访问父类成员 4.base调用父类方法必须重写父类方法 5.base子类构造函数直接访问:base父类构造方法 6.base同样不能用于静态方法 public abstract class HttpBasedTransport : ClientTransportBase { protected HttpBasedTra

c语言:输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

输入一行字符,分别统计出其中英文字母.空格.数字和其他字符的个数. 解:程序: #include <stdio.h> int main() { char c; int letters=0,space=0,digit=0,other=0; printf("请输入一行字符:"); while ((c=getchar())!='\n') { if (c >= 'a'&&c <= 'z' || c >= 'A'&&c <= '

代码实现:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

import java.util.Scanner; import java.util.TreeMap; //输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一行字符:"); String s = sc.nextLine(); c

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数

题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. 程序分析:利用while语句,条件为输入的字符不为 '\n '. 1 package com.li.FiftyAlgorthm; 2 3 import java.util.Scanner; 4 5 /** 6 * 题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. 7 * 8 * 程序分析:利用while语句,条件为输入的字符不为 '\n ' 9 * @author yejin 10 */ 11 pu

以一个闰年检测程序为例的非法字符异常输入检测

闰年:闰年(Leap Year)是为了弥补认为历法规定造成的年度天数与地球实际公转周期的时间差而设立的.补上时间差的年份为闰年. 简单来说,置润法则是:四年一闰,百年不闰,四百年再闰.即规定公历年份是整百数的,必须是400的倍数才是闰年,不是400的倍数的就是平年. 例如:1950-2050年间的闰年: 1952,1956,1960,1964,1968,1972,1976,1980,1984,1988,1992,1996,2000, 2004,2008,2012,2016,2020,2024,2

.net开发环境的认识,控制台程序的创建,输出,输入,定义变量,变量赋值,值覆盖,值拼接,值打印 两种数据类型,整形类型转换

首先感谢向立凯老师带我走进.net这个很好的软件开发程序.通过两天的学习在这个领域的了解也多了很多,让大家先了解一下c#语言 c#是一种全新且简单.安全.快捷面向对象的程序设计语言.是专门为.net应用开发的语言..net的开发都基于一个统一的开发环境 Visual Studio.net.下面我们来看看怎么在Visual Studio.net.下创建以新的项目: 1.打开 2.新建一个项目 通过执行文件-新建-项目菜单命令,会弹出一个新建项目对话框.在这个对话框中选择开发语言为c#,选择框架版本

输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。

题目描述 输入 一行字符 输出 统计值 样例输入 aklsjflj123 sadf918u324 asdf91u32oasdf/.';123 样例输出 23 16 2 4程序:#include<stdio.h>int main(){    char s;    int d=0,e=0,k=0,o=0;    while((s=getchar())!='\n')     {         if((s>='A'&&s<='Z')|(s>='a'&&

验证电子邮件?手机号码?密码6-15位?验证输入网址?身份证号?邮编? 文件改名? 替换字符串部分单词?

/** *验证电子邮件?手机号码?密码6-15位?验证输入网址?身份证号?邮编? *邮箱正则: *"[\\w]@[\\w](.\\w+)+"; */ public class StringDemo8 { public static void main(String[] args) { String email = "[email protected]"; String emailRegex = "[\\w][email protected][a-zA-z0