0

私は ajax AsyncFileUpload コントロールを使用しています。ユーザーがファイルアップローダーをクリックして画像からファイルを選択すると、すぐに画像が画像コントロールに表示されるという要件があります。次の方法を使用しています

  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:&nbsp;&nbsp;&nbsp;
        <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" />
        &nbsp;<asp:Button ID="Button2" runat="server" onclick="Button2_Click" 
            Text="Button" />
        <br />
        <asp:Label ID="Label1" runat="server"></asp:Label>

    </div>
    </form>
</body>
</html>

問題は、私の画像パスがデータベースに正常に保存されていることです画像が画像コントロールにバインドされていません専門家はどこが間違っているか教えてください

4

1 に答える 1

0

これは、フル パス、つまり C:/Folder1/Folder2 のようなルート レベルからのパスにアクセスしようとしているためです。ウェブサイトの場合は機能しません。

SolutionフォルダにPicフォルダを想定しています。

したがって、パスは次のようにする必要があります

  Image1.ImageUrl = @"Pic\logo.jpg";

Pic\logo.jpg" 

データベースからの値です

~ を使用して絶対パスを使用する必要はありません

于 2013-07-10T10:07:46.867 に答える