1

ユーザーがファイルをアップロードする Web フォーム サイトがあり、ファイル名などが DB に保存されます。これらのファイルは、データリストに表示されます。このデータリストに、ファイルの種類を表すさまざまな画像 (アイコン) を表示しようとしています。

これは私のコードビハインドです。fm.getIconは、ファイル タイプを表す適切な画像へのサーバー上の完全なファイル パスを返すカスタム関数です。

コードをデバッグすると、イメージがimgFileパスに存在することを確認できます

Private Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemDataBound

        Dim docName As Label = e.Item.FindControl("fileNameLabel")
        Dim docImage As Image = e.Item.FindControl("image1")
        Dim imgFile As String = fm.getIcon(My.Computer.FileSystem.GetFileInfo(docName.Text).Extension)
        docImage.ImageUrl = imgFile

End Sub

私の問題は、画像が読み込まれないことです。imgFile を画像へのハードコードされたパスに置き換えると、正常に動作します。

私は何が欠けていますか?

4

2 に答える 2

1

fm.getIconマシン レベルのファイル パスではなく、アイコン イメージの有効な URL が実際に返されていることを確認する必要があります。fm.getIconの出力をブラウザに貼り付けて画像を表示できるはずです。ファイルのアクセス許可が問題になる可能性があります。Web サイトにサービスを提供する IIS プロセスは、アイコン イメージ ファイルを読み取れる必要があります。

于 2011-04-14T23:53:03.223 に答える
1

これを試してください。

// 最初の方法

string fileLocation = Server.MapPath("~/Images/MyFile.jpg");

FileInfo fileInfo = new FileInfo(fileLocation);

string fileExtension = fileInfo.Extension;

// 2 番目の方法

System.IO.Path.GetExtension(Server.MapPath("~/Images/MyFile.jpg")); // Result: .jpg

// get icon メソッド

docImage.ImageUrl = "~/Icons/" + 
fm.getIcon(Path.GetExtension(Server.MapPath("~/Images/MyFile.jpg")));

public string getIcon(string extension)
{
  switch (extension.ToLower())
  {
    case ".asa":
      return "asa.png";
    case ".asax":
      return "asax.png";
    case ".ascx":
      return "ascx.png";                
    default:
      return "unknown.png";
  }
}
于 2011-04-15T04:18:03.873 に答える