Почему Image не присоединяется из базы данных с помощью элемента управления AsyncFileUpload в asp.net?
Я работаю с ajax AsyncFileUpload контроля. У меня есть требование, когда, когда пользователь нажимает на fileuploader и выбирает файл из изображения, и сразу же изображение будет отображаться на моем изображении, я использую следующий метод
protected void fileUploadComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
string imagepath = Server.MapPath("~/Pics/");
string serverfilename = Path.GetFileName(AsyncFileUpload1.PostedFile.FileName);
string fullpath = Path.Combine(imagepath, serverfilename);
string path = "~/Pics/" + serverfilename;
//string filename = System.IO.Path.GetFileName(AsyncFileUpload1.FileName);
//string path = Server.MapPath("~/Pics/") + filename;
AsyncFileUpload1.SaveAs(fullpath);
// FileUpload1.PostedFile.SaveAs(path);
SqlCommand cmd = new SqlCommand("insert findfriend values('" + path + "','" + TextBox1.Text + "')", con);
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
SqlCommand GetImage = new SqlCommand("select * from findfriend where name='" + TextBox1.Text + "'", con);
GetImage.CommandType = CommandType.Text;
SqlDataReader dr = GetImage.ExecuteReader();
dr.Read();
if (dr.HasRows)
{
Image1.ImageUrl = dr["picture"].ToString();
}
}
Мой источник aspx
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
// This function will execute after file uploaded successfully
function uploadComplete() {
document.getElementById('<%=lblMsg.ClientID %>').innerHTML = "File Uploaded Successfully";
}
// This function will execute if file upload fails
function uploadError() {
document.getElementById('<%=lblMsg.ClientID %>').innerHTML = "File upload Failed.";
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<ajax:ToolkitScriptManager ID="scriptManager1" runat="server"/>
Your Name:
<asp:TextBox ID="TextBox1" runat="server" Width="223px"></asp:TextBox>
<br />
<br />
Upload Picture:<asp:FileUpload ID="FileUpload1" runat="server" />
<br />
<ajax:AsyncFileUpload ID="AsyncFileUpload1" OnClientUploadComplete="uploadComplete" OnClientUploadError="uploadError"
CompleteBackColor="White" Width="350px" runat="server" UploaderStyle="Modern" UploadingBackColor="#CCFFFF"
ThrobberID="imgLoad" OnUploadedComplete="fileUploadComplete" />
<asp:Label ID="lblMsg" runat="server" Text="Label"></asp:Label>
<br />
<br />
<asp:Image ID="Image1" runat="server" Height="295px" Width="338px" />
<br />
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Upload" />
<asp:Button ID="Button2" runat="server" onclick="Button2_Click"
Text="Button" />
<br />
<asp:Label ID="Label1" runat="server"></asp:Label>
</div>
</form>
</body>
</html>
Теперь проблема в том, что мой путь к изображению сохраняется в базе данных, и изображение не связано с контролем изображения. Эксперты, скажите, пожалуйста, где я не прав?
1 ответ
Это потому, что вы пытаетесь получить доступ к полному пути, т.е. к пути от корневого уровня, например C:/Folder1/Folder2; Что не работает в случае веб-сайта.
Я предполагаю, что папка Pic в папке Solution.
Так что путь должен быть что-то вроде
Image1.ImageUrl = @"Pic\logo.jpg";
Pic\logo.jpg"
это значение из вашей базы данных
Вам не нужно использовать абсолютный путь, используя ~