Установите изображение управления изображением динамически со стороны сервера asp.NET - PullRequest
1 голос
/ 15 апреля 2011

У меня есть веб-сайт, на котором пользователи загружают файлы, имя файла и т. Д. Сохраняется в БД.Эти файлы затем отображаются в списке данных.Я пытаюсь заставить этот список данных отображать различные изображения (значки) для представления типов файлов.

Это мой код позади. fm.getIcon - это пользовательская функция, которая возвращает полный путь к файлу на сервере подходящему образу, который представляет тип файла.

Когда я отлаживаю код, я могу убедиться, что изображение делаетсуществует в imgFile path

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 жестко закодированным путем к изображению, это будет работать нормально.

Чего мне не хватает?

Ответы [ 2 ]

1 голос
/ 15 апреля 2011

Пожалуйста, попробуйте это.

// 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

// Вашметод получения значка

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";
  }
}
1 голос
/ 15 апреля 2011

Вы должны подтвердить, что fm.getIcon фактически возвращает действительный URL-адрес изображения значка, а не путь к файлу на уровне компьютера. Вы должны быть в состоянии взять вывод fm.getIcon и вставить его в браузер и увидеть изображение. Может возникнуть проблема с правами доступа к файлам. Процесс IIS, обслуживающий веб-сайт, должен иметь возможность читать файлы изображений значков.

...