FileStream 不适用于相对路径

FileStream is not working with relative path

我正在尝试使用具有相对路径的 FileStream,但它不起作用。

 var pic = ReadFile("~/Images/money.png");

当我使用类似的东西时它正在工作:

var p = GetFilePath();
var pic = ReadFile(p);

其余代码(来自 SO):

public static byte[] ReadFile(string filePath)
        {
            byte[] buffer;
            FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
            try
            {
                int length = (int)fileStream.Length;  // get file length
                buffer = new byte[length];            // create buffer
                int count;                            // actual number of bytes read
                int sum = 0;                          // total number of bytes read

                // read until Read method returns 0 (end of the stream has been reached)
                while ((count = fileStream.Read(buffer, sum, length - sum)) > 0)
                    sum += count;  // sum is a buffer offset for next reading
            }
            finally
            {
                fileStream.Close();
            }
            return buffer;
        }

        public string GetFilePath()
        {
            return HttpContext.Current.Server.MapPath("~/Images/money.png");
        }

我不明白为什么它不起作用,因为 FileStream 构造函数允许使用相对路径。

我假设您程序中的文件夹有子文件夹 images,其中包含您的图像文件。

\folder\program.exe

\folder\Images\money.jpg

试试不带“~”。

我也遇到了同样的问题,但我使用这段代码解决了它,

尝试其中一个代码,希望它也能解决您的问题。

 #region GetImageStream
    public static Stream GetImageStream(string Image64string)
    {
        Stream imageStream = new MemoryStream();
        if (!string.IsNullOrEmpty(Image64string))
        {
            byte[] imageBytes = Convert.FromBase64String(Image64string.Substring(Image64string.IndexOf(',') + 1));
            using (Image targetimage = BWS.AWS.S3.ResizeImage(System.Drawing.Image.FromStream(new MemoryStream(imageBytes, false)), new Size(1600, 1600), true))
            {
                targetimage.Save(imageStream, ImageFormat.Jpeg);
            }
        }
        return imageStream;
    }

    #endregion

第二个

 #region GetImageStream
    public static Stream GetImageStream(Stream stream)
    {
        Stream imageStream = new MemoryStream();
        if (stream != null)
        {
            using (Image targetimage = BWS.AWS.S3.ResizeImage(System.Drawing.Image.FromStream(stream), new Size(1600, 1600), true))
            {
                targetimage.Save(imageStream, ImageFormat.Jpeg);
            }
        }
        return imageStream;
    }

    #endregion