简体   繁体   English

如何将base64转换为图像并保存在文件夹中?

[英]How can i convert base64 to image and save in a folder?

Here is my code in home controller 这是我在家庭控制器中的代码

string x = "iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTNFQTk4RTJDRkI2MTFFMkFEOTVDRTQyMDBCOUMzOTAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTNFQTk4RTNDRkI2MTFFMkFEOTVDRTQyMDBCOUMzOTAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxM0VBOThFMENGQjYxMUUyQUQ5NUNFNDIwMEI5QzM5MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxM0VBOThFMUNGQjYxMUUyQUQ5NUNFNDIwMEI5QzM5MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pkdj5GgAAAE3SURBVHjaxFM7TsNAEH0bs/GHLEGgSNCFghNQuHE6RJELcAlKeistoqDiAum4Am2aNAhxAkpKZEfEkRMv82IkgtmKFKw0nh3rvZl5M1plrcVfTwtbnK3IO80f6uohgQ5SsRieNlCtHLaaYlWO7M3F5Ad2U/Oa6HfGiLp9hHuADqU3D6hWOGqX88vT4PpueHLvrsyKJJoeEO0zloyizFZ4K4vw6X1xK6gXsclvzWyVFUmMukDQAfzd2kv8PAukFaTugVEjW2VFT9dVlaq9xLn1iYrdZA6HGgmGao4Spu3xYtxkTlWGQ43yaZAt4t46Ye4myzo4VZQF73USbkN8P1wiPdNETZ1k7pHrGBws5maZAcUMpvrA+WGB8UAhOdavAht9EySzwxKxR7HM1if7ipNNnPq3h/EpwAD3SIr+b1+pEwAAAABJRU5ErkJggg==";
// Convert Base64 String to byte[]
byte[] imageBytes = Convert.FromBase64String(x);
MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);

// Convert byte[] to Image
ms.Write(imageBytes, 0, imageBytes.Length);
System.Drawing.Image image = System.Drawing.Image.FromStream(ms, true);
image.Save(Server.MapPath("../imageReport/abc.png"), System.Drawing.Imaging.ImageFormat.Png);

After running there is no error and no image in respective folder. 运行后,在相应的文件夹中没有错误并且没有图像。

use this 用这个

public class LocalUploader
    {
        public string UploadToServer(byte[] image, string fileName)
        {
            var localPath = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority);
            var root = HttpContext.Current.Server.MapPath(@"/Uploads/");
            string filePath;
            try
            {
                var bm = ByteArrayToImage(image);
                if (!Directory.Exists(root)) // checking if upload directory exists or not
                {
                    Directory.CreateDirectory(root);
                }
                filePath = $"{ToUrlSlug($"IMG-{GetUnixEpochMethod(DateTime.Now)}-{fileName}")}.{ImageFormat.Jpeg}";
                var filePathUpdated = Path.Combine(root, filePath);
                bm.Save(filePathUpdated, ImageFormat.Jpeg);
                bm.Dispose();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return localPath + "/Uploads/" + filePath;
        }

protected Image ByteArrayToImage(byte[] byteArrayIn)
        {
            var converter = new ImageConverter();
            var img = (Image)converter.ConvertFrom(byteArrayIn);
            return img;
        }

/// <summary>
        /// Renaming Files name according to current system time
        /// </summary>
        /// <param name="dateTime"></param>
        /// <returns></returns>
        protected double GetUnixEpochMethod(DateTime dateTime)
        {
            var unixTime = dateTime.ToUniversalTime() -
                           new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

            return unixTime.TotalSeconds;
        }

        protected string ToUrlSlug(string value)
        {
            //First to lower case 
            value = value.ToLowerInvariant();
            //Remove all accents
            var bytes = Encoding.GetEncoding("Cyrillic").GetBytes(value);
            value = Encoding.ASCII.GetString(bytes);
            //Replace spaces 
            value = Regex.Replace(value, @"\s", "-", RegexOptions.Compiled);
            //Remove invalid chars 
            value = Regex.Replace(value, @"[^\w\s\p{Pd}]", "", RegexOptions.Compiled);
            //Trim dashes from end 
            value = value.Trim('-', '_');
            //Replace double occurences of - or \_ 
            value = Regex.Replace(value, @"([-_]){2,}", "$1", RegexOptions.Compiled);
            return value;
        }

    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM