簡體   English   中英

無法使用javascript和asp.net從AjaxFileUpload獲取文件名

[英]Cannot get filename from AjaxFileUpload using javascript and asp.net

我已經嘗試解決此問題並進行了數周的研究,但仍然無法正常工作。 我的代碼是簡單地上傳圖像,然后將其保存在數據庫中而無需回發。

到目前為止,我使用AjaxFileUpload上傳圖像。 我的計划是使用javascript在AjaxFileUpload中獲取上載的文件名,然后將其存儲在hiddenfield中。 然后,當管理員單擊“提交”時,它將獲取存儲在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的值,但似乎它們是空的。

為什么不使用常規的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.
    }

您可以在aspx文件上獲得像這樣的圖像名稱

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

使用這個腳本

    function abc(sender, args) {
           var Imagename = args.get_fileName();
         alert(Imagename );
       }

這樣很簡單,希望對您有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM