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();
Хостинг веб-сайтов или файлов на iis не работает таким образом. Есть несколько концепций, которые нужно изучать на этом фронте, но лучше всего начать с того, чтобы понять, что такое виртуальный каталог.
Одна цитата из этой страницы:
В IIS 7 каждое приложение должно иметь виртуальный каталог, известный как корневой виртуальный каталог, и сопоставляет приложение с физическим каталогом, содержащим контент приложения
Таким образом, это означает, что это каталог, в котором находится "контент" приложения; это могут быть простые текстовые файлы, изображения и т.д. для сложных серверных страниц, таких как aspx или даже классический asp, или php и т.д. Теперь что-либо из этого каталога недоступно размещенному веб-приложению.
Следовательно, путь, который вы собираетесь разделить, не работает. Существует несколько вариантов обработки этого сценария.
В iis вы можете создать под-виртуальный каталог и сопоставить его путь к тому месту, где ваши изображения хранятся в физическом месте, где находятся изображения.
Если ваше веб-приложение (при размещении на 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;
}
}
}
Попробуй это
Создайте папку данных в корневом каталоге
if (FileUpload1.HasFile)
{
string FileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
string imagepath =Server.MapPath("~/Data/"+FileName);
FileUpload1.SaveAs(imagepath);
uploadedimage.ImageUrl="~/"+imagepath;
}
Образ Url на вашем изображении должен быть таким
"~/"+ imagepath
Попробуйте удалить Server.MapPath