У меня есть контроль над загрузкой и окно с изображениями. Когда я загружаю изображение, мне нужно показать его в поле. Мое изображение загружается, но не отображается в поле.
Путь загруженного изображения возвращается следующим образом.
~/Фотографии/студент/Student1.jpg
Как мне получить путь как
Фотографии/студент/Student1.jpg
Моя клиентская функция для загрузки выглядит следующим образом.
$.ajaxFileUpload({
url: 'FileUpload.ashx?id=' + FileFolder + '&Mainfolder=Photos' + '&parentfolder=Student',
secureuri: false,
fileElementId: 'uplPhoto',
dataType: 'json',
success: function (data, status) {
if (typeof (data.error) != 'undefined') {
if (data.error != '') {
alert(data.error);
} else {
$('#hdnFullPhotoPath').val(data.upfile);
$('#uplPhoto').val("");
$('#lblPhotoName').text('Photo uploaded successfully')
$('#Image1').attr('src', data.upfile);
alert(data.upfile);
}
}
},
error: function (data, status, e) {
alert(e);
}
});
}
else {
alert('The photo ' + filename + ' already exists');
return false;
}
}
}
else {
alert('You can upload only jpg,jpeg,pdf,doc,docx,txt,zip,rar extensions files.');
}
return false;
}
В файле FileUpload.ashx:
Dim fileName As String = System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName)
FileUpload1.PostedFile.SaveAs(Server.MapPath(("~/Photos/Student/" + fileName)))
И добавьте элемент управления изображением в свою форму и вызовите его из codebehind, как показано, сохраните имя каталога в некотором значении сеанса и получите его
Image1.ImageUrl = "~/Photos/Student/" & Session("tempDir").ToString & "/" & filename
Все, спасибо за ваше время и помощь! Проблема с тильдой (~) - путь к файлу не был распознан. Поэтому я изменил свой код, чтобы заменить его пустым пространством.
var orgpath = data.upfile;
var photopath = orgpath.replace('~/', '');
$('#<%= ImgFacultyPhoto.ClientID%>').attr('src', photopath);
~
? Он предназначен для обозначения корня текущего приложения ASP.NET, поэтому вы, вероятно, захотите запуститьVirtualPathUtility.ToAbsolute(orgpath)
вместо удаления~
. Очевидно, что это можно сделать только на стороне сервера, поскольку это код .NET, а не jQuery.