相対パスでFileStreamを使用しようとしていますが、動作していません。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コンストラクタは相対パスを使用できるためです。
が '〜'相対パスと同じではない仮想パスを表します。 MapPathはそれを物理パスに解決します。 –
https://weblog.west-wind.com/posts/2009/Dec/21/Making-Sense-of-ASPNET-Pathsこれは、パスの種類の違いを理解するのに役立ちます –