在局域网内,连接其它电脑的MySQL数据库,在数据库中取到图片的相对路
径,现在需要把取到的图片转为base64编码怎么办?因为是相对路径,而且
还是其他电脑,所以找不到图片,在自己电脑上按照数据库中的相对路径自己
弄了一张图片,现在想要找到这张图片,通过相对路径,是否可以实现?
/// <summary>
/// 将图片转为base64编码
/// </summary>
/// <param name="imgFile">图片相对地址地址</param>
/// <returns>图片的base64编码</returns>
public static String getImageStr(String imgFile)
{
//string tmpRootDir = HttpContext.Current.Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString());//获取程序根目录
//string urlPath = tmpRootDir + imgFile.Replace(@"/", @"/"); //转换成绝对路径
//String strPath = System.Web.HttpContext.Current.Server.MapPath(@imgFile);
//string relativePath = "";
//System.IO.Path.Combine(imgFile, relativePath);
//string juedui = System.Web.HttpContext.Current.Server.MapPath(imgFile);
FileStream fs = File.OpenRead(imgFile); //OpenRead
int filelength = 0;
filelength = (int)fs.Length; //获得文件长度
Byte[] image = new Byte[filelength]; //建立一个字节数组
fs.Read(image, 0, filelength); //按字节流读取
//System.Drawing.Image result = System.Drawing.Image.FromStream(fs);
fs.Close();
string imgData64 = Convert.ToBase64String(image);
return imgData64;
}
可以实现的,比如相对路径为/images/1.jpg,那你在程序根目录下创建个images文件夹,里面放个1.jpg图片就可以了。其实转化为绝对路径后不一定跟其他电脑的一样,因为程序本身放的位置不一样。
System.IO.Path.Combine(imgFile, relativePath);
这个写反了
imgFile = System.IO.Path.Combine(relativePath, imgFile);
在这里调试下,输出imgFile
比如你的relativePath是 c:\xxx\,imgfile是 1.jpg,那么执行后,结果是 c:\xxx\1.jpg