找不到系统 IO 文件异常 C#
System IO file not found exception C#
所以我正在尝试编写将图像转换为 base64 版本的代码。
但是我抛出了一个异常。
System.IO.FileNotFoundException: 'C:\content\images\thumbs[=10=]00001_camping_650.jpeg'
现在我正在本地计算机上制作网站副本,但图像存储在测试服务器上。所以我相当确定这就是问题所在。
此外,数据库也不是本地存储的,而是在 sql 服务器上存储的。
sql 服务器和测试服务器都public 面对。
这是我正在使用的代码:
string base64String = string.Empty;
// Convert Image to Base64
using (var img = System.Drawing.Image.FromFile(Path.GetFullPath(pictureModel.ImageUrl))) // Image Path from File Upload Controller
{
using (var memStream = new MemoryStream())
{
img.Save(memStream, img.RawFormat);
byte[] imageBytes = memStream.ToArray();
// Convert byte[] to Base64 String
base64String = Convert.ToBase64String(imageBytes);
string ImageBase64 = base64String;
// return base64String;
}
}
为此调试输出:
System.Diagnostics.Debug.WriteLine(pictureModel.ImageUrl);
System.Diagnostics.Debug.WriteLine(Path.GetFullPath(pictureModel.ImageUrl));
这是:
/content/images/thumbs/0000001_camping_650.jpeg
C:\content\images\thumbs[=13=]00001_camping_650.jpeg
不确定如何解决这个问题。
我也在使用位存储库,因此 content\images\thumbs\
目录被排除在存储库之外。
我在本地计算机上的解决方案是 C:\projects\test-website 所以我想我只需要弄清楚该路径即可用于测试和实时站点。
干杯
如果您在本地计算机上进行测试。
请检查您的本地计算机中是否存在该文件
'C:\content\images\thumbs[=10=]00001_camping_650.jpeg'
或检查您的应用程序所在的位置。
如果您的本地计算机不是服务器计算机,您可以尝试显示从服务器到客户端计算机的路径。
- 首先,您需要共享您的根文件夹。
然后,使用服务器的 IP 地址访问您的共享文件夹。例如:
'\10.0.0.164\content\images\thumbs[=22=]00001_camping_650.jpeg'
重构您的代码如下:
string base64String = string.Empty;
// Convert Image to Base64
using (var img = System.Drawing.Image.FromFile(Server.MapPath("~") + pictureModel.ImageUrl))) // Image Path from File Upload Controller
{
using (var memStream = new MemoryStream())
{
img.Save(memStream, img.RawFormat);
byte[] imageBytes = memStream.ToArray();
// Convert byte[] to Base64 String
base64String = Convert.ToBase64String(imageBytes);
string ImageBase64 = base64String;
// return base64String;
}
}
好的,看来我明白了。
第一步是将所有图像复制到解决方案中。
然后我需要使用 Server.MapPath
来获取图像的绝对路径。
using (var img = System.Drawing.Image.FromFile(Server.MapPath(pictureModel.ImageUrl))) // Image Path from File Upload Controller
{
using (var memStream = new MemoryStream())
{
img.Save(memStream, img.RawFormat);
byte[] imageBytes = memStream.ToArray();
// Convert byte[] to Base64 String
base64String = Convert.ToBase64String(imageBytes);
string ImageBase64 = base64String;
// return base64String;
}
}
所以现在当我执行此输出时:
System.Diagnostics.Debug.WriteLine(Server.MapPath(pictureModel.ImageUrl));
我得到这条路:
C:\projects\test-website\Presentation\Nop.Web\content\images\thumbs[=12=]00001_camping_650.jpeg
我认为这是正确的,所以当我确认一切正常时会接受我的回答,现在还有一个错误需要解决:/
感叹编码的乐趣
所以我正在尝试编写将图像转换为 base64 版本的代码。 但是我抛出了一个异常。
System.IO.FileNotFoundException: 'C:\content\images\thumbs[=10=]00001_camping_650.jpeg'
现在我正在本地计算机上制作网站副本,但图像存储在测试服务器上。所以我相当确定这就是问题所在。 此外,数据库也不是本地存储的,而是在 sql 服务器上存储的。 sql 服务器和测试服务器都public 面对。
这是我正在使用的代码:
string base64String = string.Empty;
// Convert Image to Base64
using (var img = System.Drawing.Image.FromFile(Path.GetFullPath(pictureModel.ImageUrl))) // Image Path from File Upload Controller
{
using (var memStream = new MemoryStream())
{
img.Save(memStream, img.RawFormat);
byte[] imageBytes = memStream.ToArray();
// Convert byte[] to Base64 String
base64String = Convert.ToBase64String(imageBytes);
string ImageBase64 = base64String;
// return base64String;
}
}
为此调试输出:
System.Diagnostics.Debug.WriteLine(pictureModel.ImageUrl);
System.Diagnostics.Debug.WriteLine(Path.GetFullPath(pictureModel.ImageUrl));
这是:
/content/images/thumbs/0000001_camping_650.jpeg
C:\content\images\thumbs[=13=]00001_camping_650.jpeg
不确定如何解决这个问题。
我也在使用位存储库,因此 content\images\thumbs\
目录被排除在存储库之外。
我在本地计算机上的解决方案是 C:\projects\test-website 所以我想我只需要弄清楚该路径即可用于测试和实时站点。
干杯
如果您在本地计算机上进行测试。 请检查您的本地计算机中是否存在该文件
'C:\content\images\thumbs[=10=]00001_camping_650.jpeg'
或检查您的应用程序所在的位置。
如果您的本地计算机不是服务器计算机,您可以尝试显示从服务器到客户端计算机的路径。
- 首先,您需要共享您的根文件夹。
然后,使用服务器的 IP 地址访问您的共享文件夹。例如:
'\10.0.0.164\content\images\thumbs[=22=]00001_camping_650.jpeg'
重构您的代码如下:
string base64String = string.Empty;
// Convert Image to Base64
using (var img = System.Drawing.Image.FromFile(Server.MapPath("~") + pictureModel.ImageUrl))) // Image Path from File Upload Controller
{
using (var memStream = new MemoryStream())
{
img.Save(memStream, img.RawFormat);
byte[] imageBytes = memStream.ToArray();
// Convert byte[] to Base64 String
base64String = Convert.ToBase64String(imageBytes);
string ImageBase64 = base64String;
// return base64String;
}
}
好的,看来我明白了。
第一步是将所有图像复制到解决方案中。
然后我需要使用 Server.MapPath
来获取图像的绝对路径。
using (var img = System.Drawing.Image.FromFile(Server.MapPath(pictureModel.ImageUrl))) // Image Path from File Upload Controller
{
using (var memStream = new MemoryStream())
{
img.Save(memStream, img.RawFormat);
byte[] imageBytes = memStream.ToArray();
// Convert byte[] to Base64 String
base64String = Convert.ToBase64String(imageBytes);
string ImageBase64 = base64String;
// return base64String;
}
}
所以现在当我执行此输出时:
System.Diagnostics.Debug.WriteLine(Server.MapPath(pictureModel.ImageUrl));
我得到这条路:
C:\projects\test-website\Presentation\Nop.Web\content\images\thumbs[=12=]00001_camping_650.jpeg
我认为这是正确的,所以当我确认一切正常时会接受我的回答,现在还有一个错误需要解决:/
感叹编码的乐趣