这是我在家庭控制器中的代码
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);
运行后没有错误,相应文件夹中没有图像。
答案 0 :(得分:0)
使用此
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;
}
}