ディレクトリ内のコンテンツを読み取って作成した画像ギャラリーがあります。ファイル名に「+」が含まれていると、すぐに問題に気付きました。「glas + door.jpg」みたいに壊れる。だから私はそれがエンコーディングの問題だと思った.それは「+」記号だけだったので、「+」を「%2b」に置き換えると問題が解決すると思った. ローカルでは問題は修正されましたが、ホストにアップロードしたときに、「+」記号を「%2b」に置き換えてもうまくいかないことに気付きました。
そこで、ASP.NET のエンコーディングの可能性を調べ始めました。Server.UrlEncode
とを見つけましServer.UrlPathEncode
た。これにより、以前は機能していた画像が機能しなくなるなど、さまざまな結果が得られました。
では、パスをエンコードする正しい方法は何ですか?また、置換の「トリック」が PC では機能するのに、ホスティング環境では機能しないのはなぜですか?
public List<fileInfo> RenderImages()
{
List<fileInfo> RenderImages = new List<fileInfo>();
var Images = GetImages();
if (Images != null)
{
foreach (var Image in Images)
{
string FullPath = Path + FolderName + "/" + Image.Name.Replace("+", "%2b");
string ImageName = Image.Name.Replace(Image.Extension, string.Empty);
RenderImages.Add(new fileInfo { path = FullPath, name = ImageName });
}
}
return RenderImages;
}
public class fileInfo
{
public string path { get; set; }
public string name { get; set; }
}
この関数は、特定のディレクトリからGetImages()
jpg、gif、および png を取得します。FileInfo
必要に応じて、コードのその部分も投稿できます。
それが役立つ場合は、ここで画像がどのように壊れているかを確認できます。とありReplace("+", "%2b")
ます。
前もって感謝します。