0

リピーターにプロジェクトのフォルダーからの写真を入力する代わりに、画像の場所へのリンクを入力したい..............

http://www.erate.co.za/imgGrab.aspx?Id=99

コードが「pics」フォルダーではなく、画像のハイパーリンクを参照できるようにするには、どのようなコード変更を行う必要がありますか?

マイページロード

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string sBasePath = System.Web.HttpContext.Current.Request.ServerVariables["APPL_PHYSICAL_PATH"];
            if ( sBasePath.EndsWith("\\"))
                sBasePath = sBasePath.Substring(0,sBasePath.Length-1);

            sBasePath = sBasePath + "\\" + "pics";

            System.Collections.Generic.List<string> oList = new System.Collections.Generic.List<string>();
            foreach (string s in System.IO.Directory.GetFiles(sBasePath, "MyPicture.jpg"))
            {
                //We could do some filtering for example only adding .jpg or something
                oList.Add( System.IO.Path.GetFileName( s ));

            }
            repImages.DataSource = oList;
            repImages.DataBind();
        }

    }

リピーターの ItemDataBound イベント (repImages と呼ばれる)

 protected void repImages_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.AlternatingItem ||
            e.Item.ItemType == ListItemType.Item)
        {
            string sFile = e.Item.DataItem as string;

            //Create the thumblink
            HyperLink hlWhat = e.Item.FindControl("hlWhat") as HyperLink;
            hlWhat.NavigateUrl = ResolveUrl("~/pics/" + sFile  );
            hlWhat.ToolTip = System.IO.Path.GetFileNameWithoutExtension(sFile);
            hlWhat.Attributes["rel"] = "imagebox-bw";

            Image oImg = e.Item.FindControl("imgTheImage") as Image;
            oImg.ImageUrl = ResolveUrl("~/createthumb.ashx?gu=/pics/" + sFile + "&xmax=100&ymax=100" );


        }

    }

エティエンヌ

4

2 に答える 2

1

私がそれを正しく理解していれば、これは多面的な問題です:

a. ローカル フォルダーではなく、インターネット URL から画像を読み込みたいとします。これは、リモート URL で利用可能なファイルを一覧表示する何らかの方法が必要であることを意味します。問題を客観的に見ると、リモートの場所から画像を取得する場合とローカル システムから画像を取得する場合の唯一の違いは、DirectoryInfo クラスを使用してファイルを簡単に列挙できることであることがわかります。このGetFilesメソッドは の配列を返しFileInfo、FileName プロパティを使用してそれぞれの実際のファイル名を取得できます。基本的に、ファイルの場所にマップする文字列のリストが必要です。

b. リモートの場所だけからファイルを列挙することは、そのリストを取得するために使用しているプロトコルなど、多くの要因に依存します。HTTP を使用していて、その場所のサーバーをある程度制御できると想定できる場合、URL は主にディレクトリの参照をサポートする必要があります。次に、提供されたディレクトリ リスト (非標準でサーバー固有のもの) を解析し、使用可能なすべての画像 URL を文字列として読み込む必要があります。その後、リピーターにそのリストを入力できます。考えられる解決策については、このディスカッションを参照してください。

サーバーが FTP をサポートしている場合は、WebRequestMethods.Ftp.ListDirectory または WebRequestMethods.Ftp.ListDirectory メソッドを使用して画像を列挙できるため、作業が簡単になります。

c. 画像のサムネイルを作成する場合は、各画像をダウンロードして一時的な場所に保存し、寸法操作を実行するコードを記述する必要があります。

d. ただし、インターネットの場所で利用可能な画像のリストが静的であり、その情報が既にある場合は、そのリストを文字列のリストとしてロードし、各画像コントロールの src プロパティをそのリストに設定するだけです。ただし、サムネイル作成者 (HTTP ハンドラー) をその URL にもアップロードして、操作のためにローカルでファイルを取得し、サムネイルが自動的に提供されるようにしない限り、サムネイルは問題のままです。

于 2009-04-08T09:18:24.030 に答える
0

リピーターのテンプレートに<img>タグを含めます。ソースをプログラムで設定する必要がある場合は、 にしrunat="server"ます。

于 2009-04-08T08:43:59.213 に答える