找不到系统 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'

或检查您的应用程序所在的位置。

如果您的本地计算机不是服务器计算机,您可以尝试显示从服务器到客户端计算机的路径。

  1. 首先,您需要共享您的根文件夹。
  2. 然后,使用服务器的 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

我认为这是正确的,所以当我确认一切正常时会接受我的回答,现在还有一个错误需要解决:/

感叹编码的乐趣