C#上传图片,转化为二进制流。路径超长

图片说明

imd不是一个base64的字符串吗,base64可以直接转换为图片啊,好像是convert.frombase64,啥的,你将base64 的字符串填入路径,参数不对的啊

imd是图片本身,而不是图片的文件名,而path是文件的文件名,而不是图片的本身
说着像绕口令,但是你不应该用path=imd

图片说明
路径是这样,还是不行格式不对

大家有做图片存入数据库类似的功能的吗,可以给我参考一下吗

你直接这样写 return BASE64Decoder.class.newInstance().decodeBuffer(imd.substring(imd.indexOf(";base64,"))); 因为 base64已经是图片的二进制流base64加密的。 导入 sun.misc.BASE64Decoder;包

var imd = $('#imagedisplay').attr("src");

从前端用 $('#imagedisplay').attr("src");获取到的base64格式字符串,就是图片本身,而不是图片的地址。所以如果你要获取到图片的byte数据,用 byte[] arr = Convert.FromBase64String(inputStr);可以参考https://blog.csdn.net/qq_26712977/article/details/78390690

上传图片,只是吧图片复制再项目某个文件里,把路径入库,
string imageName = fileimage.FileName;//上传控件获取上传图片名称
string imagewj = Server.MapPath("mp4Image");
if (!Directory.Exists(imagewj))
{
Directory.CreateDirectory(imagewj);
}
string saveimage = imagewj + @"\" + imageName;
fileimage.SaveAs(saveimage);

                            然后把imagewj\imageName 图片地址信息入库
                            想查看的时候直接加载地址就可以了

先做图片压缩在做上传 这样是最好的 不压缩处理读取的时候回很慢

数据库里的存图片的字段设计的什么类型的?我设计的是Image类型的,没问题。不过我读取的是身份证上的图片。没那么大。

你这个imd应该是一个base64的码,你要把里边的base64的码提取出来,你那开头应该不是base64的码,后边那一串应该是的,应该就是你的图片

    把这个转成byte[]
        var data = Convert.FromBase64String(s);
            然后初始化为memorystream 可以直接初始化为image,然后就可以为所欲为了
    using (MemoryStream ms = new MemoryStream(data))
                    {
                                                //这就是你的image
                        Image image = Image.FromStream(ms);

                    }