Как отобразить изображение с помощью imageurl в C #

1
if (FileUpload1.HasFile)
        {
            string FileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
            //string path = Server.MapPath(@"~\\"+Session["parentfolder"].ToString() +"\\"+ Session["brandname"].ToString() + "\\" + Seasonfolders.SelectedItem.Text + "\\" + stylefolders.SelectedItem.Text + "\\Images\\" + FileName);
            string root = Server.MapPath("~");
            string path = Path.GetDirectoryName(root);
            string path1 = Path.GetDirectoryName(path);
            string rootfolder = Path.GetDirectoryName(path1);
            string imagepath = rootfolder + Session["brandname"].ToString() + "\\" + Seasonfolders.SelectedItem.Text + "\\" + stylefolders.SelectedItem.Text + "\\Images\\" + FileName;
            FileUpload1.SaveAs(imagepath);
            //objBAL.SaveImage("Image", Session["brandname"].ToString(), Seasonfolders.SelectedItem.Text, stylefolders.SelectedItem.Text, FileName, imagepath, Convert.ToInt32(Session["Empcode"]));
            uploadedimage.ImageUrl = Server.MapPath(@"~/"+imagepath);
            uploadedimage.DataBind();

        }

uploadedimage - ID для управления изображениями. Путь пути изображения - E:\Folder1\Folder2\Folder3\Images\1.png

Изображение сохраняется, но я не могу отображать загруженное изображение. Мне нужно добавить что-нибудь в этой строке, чтобы отобразить изображение.

            uploadedimage.ImageUrl = Server.MapPath(@"~/"+imagepath);
            uploadedimage.DataBind();
Теги:

3 ответа

1
Лучший ответ

Хостинг веб-сайтов или файлов на iis не работает таким образом. Есть несколько концепций, которые нужно изучать на этом фронте, но лучше всего начать с того, чтобы понять, что такое виртуальный каталог.

Одна цитата из этой страницы:

В IIS 7 каждое приложение должно иметь виртуальный каталог, известный как корневой виртуальный каталог, и сопоставляет приложение с физическим каталогом, содержащим контент приложения

Таким образом, это означает, что это каталог, в котором находится "контент" приложения; это могут быть простые текстовые файлы, изображения и т.д. для сложных серверных страниц, таких как aspx или даже классический asp, или php и т.д. Теперь что-либо из этого каталога недоступно размещенному веб-приложению.

Следовательно, путь, который вы собираетесь разделить, не работает. Существует несколько вариантов обработки этого сценария.

  1. В iis вы можете создать под-виртуальный каталог и сопоставить его путь к тому месту, где ваши изображения хранятся в физическом месте, где находятся изображения.

  2. Если ваше веб-приложение (при размещении на iis) имеет доступ к пути, где находятся изображения, вы можете написать код для чтения файла и отправить поток байтов обратно, чтобы ваша веб-страница могла правильно отображать изображение.

Второй подход обычно реализуется обработчиком (ashx), через который вы можете передать имя изображения в качестве аргумента строки запроса и вернуть байты. Короче говоря, вы делаете что-то вроде этого:

uploadedImage.ImageUrl = "~/MyImageHandler.ashx?filename=foo.png" //in ur server code.

В обработчике вы пишете что-то вроде этого:

public class MyImageHandler : IHttpHandler {

    public void ProcessRequest (HttpContext context) {
    // Comment out these lines first:
    // context.Response.ContentType = "text/plain";
    // context.Response.Write("Hello World");

    context.Response.ContentType = "image/png";

    var filepath = @"E:\your_image_dir\" + Request.QueryString["filename"];

    //Ensure you have permissions else the below line will throw exception.
    context.Response.WriteFile(filepath);

    }

    public bool IsReusable {
    get {
        return false;
    }
    }
}
  • 0
    позвольте мне использовать эти коды и проверить, получаю ли я то, что ожидал. Спасибо @deostroll
1

Попробуй это

Создайте папку данных в корневом каталоге

 if (FileUpload1.HasFile)
    {
        string FileName = Path.GetFileName(FileUpload1.PostedFile.FileName);              
        string imagepath =Server.MapPath("~/Data/"+FileName);
        FileUpload1.SaveAs(imagepath); 

        uploadedimage.ImageUrl="~/"+imagepath;
    }
  • 0
    он отображается как разбитое изображение ... не оригинальное изображение, которое я загрузил ...
1

Образ Url на вашем изображении должен быть таким

"~/"+ imagepath

Попробуйте удалить Server.MapPath

  • 0
    Дай мне попробовать ....
  • 0
    Я не знаю, почему это не работает ?????

Ещё вопросы

Сообщество Overcoder
Наверх
Меню