BebeSaiyan Ответов: 0

Не удается получить имя файла из ajaxfileupload с помощью javascript и ASP.NET


Я пытался решить эту проблему и исследовать ее в течение нескольких недель, но все еще не могу заставить ее работать. Мой код состоит в том, чтобы просто загружать изображения, а затем сохранять их в базе данных без обратной передачи.

На данный момент я использовал AjaxFileUpload для загрузки изображений. Мой план состоял в том, чтобы получить загруженное имя файла в AjaxFileUpload с помощью javascript, а затем сохранить его в скрытом поле. А затем, когда администратор нажмет кнопку Отправить, он получит значение, которое было сохранено в скрытом поле, а затем сохранит его в базе данных(используя запрос, который я создал в своем коде).

Проблема в том, что он всегда будет возвращаться пустым. Я надеюсь, что вы, ребята, действительно сможете мне помочь.

Что я уже пробовал:

Вот код для 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('<%# itemFileUpload1.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, но кажется, что они пусты.

ZurdoDev

Отладка кода JavaScript. Вызывается ли функция abc ()? Если да, то правильно ли там передаются значения?

Кроме того, зачем вам нужны имена файлов после нажатия кнопки? Вы уже использовали их при загрузке.

BebeSaiyan

Мне нужны эти имена файлов, чтобы я мог сохранить их в своей базе данных. Я уже пробовал передавать имя файла из загрузки (которое находится в ItemUploadImage1 и 2), но значение всегда пустое. Вероятно, он не сохраняет свою ценность из-за обратной передачи. Я просто попробовал получить имя файла через клиентскую сторону, чтобы посмотреть, смогу ли я получить имя файла, но оказалось, что оно тоже не работает.

Karthik_Mahalingam

использовать  Ответить  кнопка, чтобы отправить комментарии / запрос пользователю, чтобы пользователь получил уведомление и ответил на ваш текст.

Kornfeld Eliyahu Peter

document. getElementById('<%# itemFileUpload1.ID %>')
Это, вероятно, дает Вам большое "неопределенное"... Отладьте его... и используйте ClientID вместо ID...

0 Ответов