2017-08-17 50 views
0

我从数据库这样的检索图片:我怎样才能得到的URL从base64string摆脱

public ViewResult Details(int id = 0) 
{ 
    vm.ImageToShow = Convert.ToBase64String(model.Picture) 
    return View(vm); 
} 

Picture定义:

public byte[] Picture { get; set; } 

而且我显示在View这个样子:

@Html.Raw("<img src=\"data:image/jpeg;base64," + Model.ImageToShow + "\" 
onclick='javascript: window.open(\"data:image/jpeg;base64," + Model.ImageToShow + "\")'/>") 

当我点击它。它会打开一个新选项卡并显示图像,但该URL显示所有base64字符串,如data:image/jpeg;base64,iVBORw0KGg.....。我怎样才能摆脱这一点,并显示与图像名称或其他任何短的网址?

+0

有一个动作返回到图像 –

+0

@RyanSearle我已经更新了我的问题,我发现我的操作方法也。 – SteveCode

+0

如果你不想要Base64,那么明显的答案是......不要使用它。在结果中发送图像的URL而不是base64字符串。然而,它看起来并不像你实际上有一个URL,因为你将它存储为一个字节数组。它有没有来自数据库?不知道你真的能够克服这一点,除非下面的答案会起作用。无论如何,base64有什么问题?有用。 – ADyson

回答

2
public ViewResult Details(int id = 0) 
{ 
    //vm.ImageToShow = Convert.ToBase64String(model.Picture) 
    vm.ID = id; 
    return View(vm); 
} 

public FileResult Image(int id = 0) 
{ 
    .. 
    return File(model.Picture,"image/jpeg"); 
} 


@Html.Raw("<img src=\"image?id=" + Model.ID + "\" 
onclick='javascript: window.open(\"image?id=," + Model.ID + "\")'/>")