Загрузите файл с помощью AsyncFileUpload Control и сохраните его - PullRequest
1 голос
/ 26 июля 2011

Я делаю проект:

Front end - Visual Studio 2010

Technology : C#

Back end - Sql Server 2005

Я пытаюсь загрузить файл с помощью AsyncFileUpload Control и сохранить его в папке "~ / Image /".

Сценарий:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:AsyncFileUpload ID="AsyncFileUpload1" runat="server" 
            onuploadedcomplete="AsyncFileUpload1_UploadedComplete"/>
    </ContentTemplate>

Код позади:

protected void AsyncFileUpload1_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
    if (AsyncFileUpload1.HasFile)
    {
        AsyncFileUpload1.SaveAs("~/Image/" + AsyncFileUpload1.FileName);
        Label2.Text = "Recieved " + AsyncFileUpload1.FileName + " Content Type" + AsyncFileUpload1.PostedFile.ContentType;
    }
}

Но каждый раз, когда показывается ошибка времени выполнения, вызывается:

The SaveAs method is configured to require a rooted path, and the path '~\Image\Filename.jpg' is not rooted.

Могу ли я узнать об ошибке и ее решении.

Заранее спасибо,

Нихилу

Ответы [ 2 ]

0 голосов
/ 04 февраля 2013
 String path = "~/Image/" + FileUpload1.FileName;

Должно быть так:

 String path = Server.MapPath("~/Image/") + FileUpload1.FileName;
0 голосов
/ 14 сентября 2011

Я понял это:

table width="100%" style="font: 8pt verdana">
                <tr width="100%">
                <td width="40%">
                    <asp:FileUpload ID="FileUpload1" runat="server" />
                    <asp:HiddenField ID="HiddenField1" runat="server" />
                </td>
                <td width="40%"><asp:Label ID="lblPicStatus" runat="server"></asp:Label></td>
                <td>
                <asp:Button ID="Button2" runat="server" Text="Upload" BackColor="White" 
                        BorderColor="#507CD1" BorderStyle="Solid" BorderWidth="1px" 
                        onclick="Button2_Click"/></td>
                </tr>
</table>

Код сзади,

protected void Button2_Click(object sender, EventArgs e)
{

    try
    {
        con.Open();
        if (FileUpload1.HasFile)
        {
            String fileExt = Path.GetExtension(FileUpload1.FileName);
            if (fileExt == ".jpg" || fileExt == ".gif" || fileExt == ".bmp" || fileExt == ".jpeg" || fileExt == ".png")
            {
                String path = "~/Image/" + FileUpload1.FileName;
                cmd.CommandText = "update " + HttpContext.Current.User.Identity.Name + " set image = '" + path + "'";
                cmd.Connection = con;
                cmd.ExecuteNonQuery();
                FileUpload1.SaveAs(Server.MapPath("~/Image/") + FileUpload1.FileName);
                Response.Redirect(Request.RawUrl);
            }
            else
            {
                lblPicStatus.Text = "File to be uploaded is not an image";
            }
            con.Close();
        }
    }

    catch (Exception a)
    {
        Response.Write(a.Message);
    }
}
...