[英]How can I convert an image to a base64 format which is stored in my project folder?
如何将图像转换为存储在我的项目文件夹中的 base64 格式? 我试过这个。 但它不起作用
public string ImageToBase64( string path)
{
string path = @"~/img/company.png";
using (System.Drawing.Image image = System.Drawing.Image.FromFile(path))
{
using (MemoryStream m = new MemoryStream())
{
image.Save(m, image.RawFormat);
byte[] imageBytes = m.ToArray();
base64String = Convert.ToBase64String(imageBytes);
return base64String;
}
}
}
在调用System.Drawing.Image.FromFile(path)
之前,将路径从 URL 解析为绝对路径。 您可以通过调用Server.MapPath(path)
来做到这一点。
IE
string path = @"~/img/company.png";
path = Server.MapPath(path);
using (System.Drawing.Image image = System.Drawing.Image.FromFile(path))
或者干脆
string path = @"~/img/company.png";
using (System.Drawing.Image image = System.Drawing.Image.FromFile(Server.MapPath(path)))
更详细的解释
~/img/company.png
表示从站点的根目录(这是波浪号 ( ~
) 所指的)导航到img
子文件夹,然后导航到文件company.png
。System.Drawing.Image
类不是为 URL 构建的,因此不知道如何处理它们。 相反,它需要文件系统的路径。 它无法理解 URL 的原因是:
path = @"img\\company.png"
它也会尝试根据工作目录而不是站点的根目录查找文件。 当前工作目录可能是 IIS 可执行文件的位置( c:\\Windows\\System32\\inetsrv\\虽然我不确定/最好不要知道,因为工作目录的想法在网络上下文)。\\img\\
也可能位于磁盘上与其在站点结构中的位置完全不同的位置; 甚至可能被映射到某个远程文件服务器上的共享)。Server.MapPath
将此 URL 解析为非 Web 感知功能可以理解的真实路径。 这里有一个很好的答案,在Server.MapPath
上提供了更多详细信息和示例: https : //stackoverflow.com/a/27500722/361842
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.