无法使用javascript和asp.net从AjaxFileUpload获取文件名

时间:2017-08-14 12:53:03

标签: javascript c# asp.net

我已经尝试解决这个问题并进行了数周的研究,但仍然无法让它发挥作用。我的代码是简单地上传图像,然后将其保存在数据库中而不进行回发。

截至目前,我使用AjaxFileUpload上传图片。我的计划是使用javascript在AjaxFileUpload中获取上传的文件名,然后将其存储在hiddenfield中。然后当管理员点击提交时,它将获得存储在隐藏字段中的值,然后将其保存在数据库中(使用我在代码隐藏中创建的查询)。

问题是,它总是会返回空的。我希望你们能真正帮助我。

以下是aspx的代码:

<%@ Page Language="C#" AutoEventWireup="true" 
CodeFile="CreateBrands.aspx.cs" Inherits="Pages_CreateBrands" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" 
TagPrefix="asp"%>  

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Music Store</title>
<script src="../Javascript/jquery-1.11.2.min.js"></script>
<link rel="stylesheet" href="~/Styles/jquery.bxslider.css"/>
<link rel="shortcut icon" type="image/png" href="~/Images/rockSign.png"/>
<script type="text/javascript">
    function abc() {
    var elem1 = document.getElementById('<%# itemFileUpload1.ID %>').value;
        document.getElementById('HiddenInput1') = elem1;
    var elem2 = document.getElementById('<%# itemFileUpload2.ID %>').value;
        document.getElementById('HiddenInput2') = elem2;
    }
</script>
</head>
<body>
<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
                    </asp:ScriptManager>
     <div id="wrapper">

         <h1>Item Image1:</h2>
         <br />

         <asp:AjaxFileUpload ID="itemFileUpload1" runat="server"
         Width="300px" OnUploadComplete="itemUploadImage1"
         OnClientUploadComplete="abc"/>
       <input type="hidden" id="HiddenInput1" name="HiddenInput" value="" />

        <h1>Item Image2:</h2>
        <br />

        <asp:AjaxFileUpload ID="itemFileUpload2" runat="server" 
         Width="300px" OnUploadComplete="itemUploadImage2" 
        OnClientUploadComplete="abc"/>
       <input type="hidden" id="HiddenInput2" name="HiddenInput" value="" />
        <br/>

      <asp:Label ID="lblResult2" runat="server" Text=""></asp:Label>
        <br />

      <asp:Button ID="Button1" runat="server" CssClass="submitButton" 
      Text="Save Item" OnClick="Button1_Click"/>

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

这是aspx.cs的代码:

  protected void itemUploadImage1(object sender, AjaxFileUploadEventArgs e)
{

        string filename = Path.GetFileName(e.FileName);
        itemFileUpload1.SaveAs(Server.MapPath("~/Images/Brands/String Instrument Items/Guitar/") + filename);
}

protected void itemUploadImage2(object sender, AjaxFileUploadEventArgs e)
{
        string filename = Path.GetFileName(e.FileName);
        itemFileUpload2.SaveAs(Server.MapPath("~/Images/Brands/String Instrument Items/Guitar/") + filename);

}

 protected void Button1_Click(object sender, EventArgs e)
 {
        try {

            string item_image1 = Request.Form["HiddenInput1"];
            string item_image2 = Request.Form["HiddenInput2"];

            ConnectionClassGuitarItems.AddStringInstrumentItems(item_image1,item_image2);

            lblResult2.Text = "Upload successful!" + item_image1 + " and " + item_image2;

            ClearTextFields2();
        }
        catch (Exception ex)
        {
            lblResult2.Text = ex.Message;
        }
}

注意Button1_Click,我尝试访问HiddenInput1和HiddenInput2的值,但看起来它们是空的。

2 个答案:

答案 0 :(得分:0)

为什么不使用常规的asp:FileUpload控件并在updatepanel中包装部分表单/代码块来实现与使用AjaxFileUpload控件相同的所需操作:

<asp:UpdatePanel runat="server" UpdateMode="Always" ID="updPnlName">
 <ContentTemplate>
   <asp:FileUpload runat="server" ID="fileImport" CssClass="form-control"/>
 </ContentTemplate>
</asp:UpdatePanel>

代码背后:

    protected void btnUpload_OnClick(object sender, EventArgs e)
    {
        if (fileImport.HasFile)
        {
            UploadProcessFile();
        }
    }

    private void UploadProcessFile()
    {            
        var fileName = fileImport.FileName;
        //Process the rest of your code below you can also assign the file name to your textbox.
    }

答案 1 :(得分:0)

您可以在

上的aspx文件中获取这样的图像名称
87 error code

使用此脚本

 <asp:AjaxFileUpload ID="itemFileUpload2" runat="server" 
     Width="300px" OnUploadComplete="itemUploadImage2" 
    OnClientUploadComplete="abc"/>

这种方式非常简单,希望对您有所帮助