0

こんにちは、画像ソースのハッシュを含む URL を送信したいのですが、どうすればよいですか?

コード :

Image img_ = new Image();          
img_.ImageUrl = "ShowImageInRuntime.aspx?FileName=C://Images//Image.jpg";

ページに自分のローカル パスを表示したくありません。助けてください。Thx

4

1 に答える 1

2

送信する前にパスの暗号化と base 64 エンコードを実行し、ハンドラーで逆の処理を行う必要があります。

その他のオプションは、XML にパスと対応する識別子が含まれるマッピング XML を維持することです。アプリケーションで、パスを含むノードを取得し、ID を選択して送信し、それを URL に追加します。ハンドラーで逆の手順を実行して、パスをフェッチします。

更新: サンプル コードの追加

GUID を ID とし、対応するファイル名を持つ XML ファイル。guid を使用すると、ランダムな ID を簡単に推測できなくなります。

<?xml version="1.0" encoding="utf-8" ?>
<mappings>
  <map id="485D9075B9CA4d8d9DBA1AD9CD09FC13" fileName="c:\images\image1.jpg"/>
  <map id="475D4A22B1FA4eda8234007BD327D7B9" fileName="c:\images\image2.jpg"/>
  <map id="77623BF3094440c49AC65CEF76D1B824" fileName="c:\images\image3.jpg"/>
</mappings>

LINQ to XML の使用

public class ImageMapper
{
    private XDocument Document { get; set; }

    public ImageMapManager()
    {
        Document = XDocument.Load("Map.xml");
    }

    public string GetFileNameFromId(string id)
    {
        var result = from node in Document.Descendants("map")
                     where node.Attribute("id").Value.Equals(id, StringComparison.InvariantCultureIgnoreCase)
                     select node.Attribute("fileName").Value;
        return (result == null || result.Count() == 0) ? null : result.ElementAt(0);
    }
    public string GetIdFromFileName(string fileName)
    {
        var result = from node in Document.Descendants("map")
                     where node.Attribute("fileName").Value.Equals(fileName, StringComparison.InvariantCultureIgnoreCase)
                     select node.Attribute("id").Value;
        return (result == null || result.Count() == 0) ? null : result.ElementAt(0);

    }
}
于 2012-04-12T11:09:50.363 に答える