Загрузка файла не работает - PullRequest
       13

Загрузка файла не работает

2 голосов
/ 18 декабря 2009

Я использую загрузку файлов на моем сайте. Я загружаю слово Document (Doc, Docx). Внезапно это не работает. Это не получение имени файла. Это показывает пустой !!! Мой код выглядит следующим образом:

<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="ContentPlaceHolder1">

<table width="100%" align="center">
    <tr>
        <td style="height: 21px" align="center">
            <span class="lbl"></span>
            <asp:UpdatePanel ID="UpdatePanel2" runat="server">
                <ContentTemplate>
                    <asp:Button ID="btnResumedload" Text="Download Resume" runat="server" BackColor="Maroon"
                        ForeColor="White" Font-Bold="true" OnClick="btnResumedload_Click" Height="27px"
                        Width="195px" />
                </ContentTemplate>
            </asp:UpdatePanel>
        </td>
    </tr>
    <tr>
        <td align="center">
            <asp:UpdatePanel ID="UpdatePanel4" runat="server">
                <ContentTemplate>
                    <asp:Button ID="btnUploadnew" Text="Upload New" runat="server" BackColor="Maroon"
                        ForeColor="White" Font-Bold="true" OnClick="btnUploadnew_Click" Height="30px"
                        Width="198px" />
                </ContentTemplate>
            </asp:UpdatePanel>
        </td>
    </tr>
    <tr>
        <td align="center">
            <asp:UpdatePanel ID="UpdatePanel3" runat="server">
                <ContentTemplate>
                    <asp:Button ID="btnDel" Height="30px" Width="198px" OnClientClick="return confirm('Are you sure?');"
                        BackColor="Maroon" ForeColor="White" Font-Bold="true" Text="Delete Resume" runat="server"
                        OnClick="btnDel_Click"></asp:Button>
                </ContentTemplate>
            </asp:UpdatePanel>
        </td>
    </tr>
    <tr>
        <td align="center">
            <asp:Label ID="lblmsg" runat="server" Font-Bold="True" ForeColor="Red" Visible="False"
                Height="17px" Width="855px"></asp:Label>
        </td>
    </tr>
    <tr>
        <td align="center">
            <span class="txt">
                <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                    <ContentTemplate>
                        <%--<ajaxToolkit:AsyncFileUpload ID="fpResumenew" runat="server" Visible="false" />--%>
                        <asp:FileUpload ID="fpResumenew" runat="server" Visible="false" Width="226px" />
                    </ContentTemplate>
                    <Triggers>
                        <asp:PostBackTrigger ControlID="btnUpload" />
                    </Triggers>
                </asp:UpdatePanel>
            </span>
        </td>
    </tr>
    <tr>
        <td align="center">
            &nbsp;
        </td>
    </tr>
    <tr>
        <td style="vertical-align: top" align="center">
            <%--<asp:Button ID="btnUpload" Font-Bold="true" DisabledText="Processing..." Visible="false"
                        Text="Upload" BackColor="Maroon" ForeColor="White" runat="server" OnClick="btnUpload_Click" />--%>
            <cc1:ClickOnceButton ID="btnUpload" Font-Bold="true" DisabledText="Processing..."
                Visible="false" Text="Upload" BackColor="Maroon" ForeColor="White" runat="server"
                OnClick="btnUpload_Click" DisableAfterClick="True" />
        </td>
    </tr>
</table>

защищенный void btn_Click (отправитель объекта, EventArgs e)

{

    string strfilename = fp.FileName.ToString();

    if (fp.PostedFile.FileName.Trim().Length != 0)

    {

        binary = new byte[fp.PostedFile.ContentLength];

        binary = fp.FileBytes;

        doc = fp.FileName;

        contenttype = fp.PostedFile.ContentType;


    }

}

Просто образец !!!


У меня ничего не работает .. Проблема в том, что я использую еще три кнопки на той же странице. Другие кнопки, инициализирующие управление загрузкой файлов. Таким образом, при нажатии кнопки загрузки имя файла будет пустым. Итак, я использовал другую страницу для загрузки документа Word. Теперь это работает .. !! Во всяком случае, мне нужно решение для этого! Кто-нибудь, дайте мне идею!

Ответы [ 3 ]

4 голосов
/ 18 декабря 2009

Хай Вайшу

Элементы управления FileUpload не совместимы с UpdatePanel, когда они используются для загрузки файлов в рамках асинхронной обратной передачи.

Просто проверьте документацию AJAX. Элемент управления FileUpload не поддерживается внутри UpdatePanel (http://ajax.asp.net/docs/overview/UpdatePanelOverview.aspx):

или

использовать asp: postbacktrigger вместо asyncpostbacktrigger

<asp:updatepanel runat="server" id="UpdatePanel1">
    <contenttemplate>
        <asp:FileUpload runat="server" id="FileUpload1" />
        <asp:button runat="server" id="ButtonSubmit" text="Postback" />
    </contenttemplate>
    <triggers>
        <asp:postbacktrigger controlid="ButtonSubmit" />
    </triggers>

</asp:updatepanel>

или

использовать ajax для асинхронной загрузки файлов:

http://www.asp.net/(S(fu2l2uzphr2u3u45q2dnez55))/ajax/AjaxControlToolkit/Samples/AsyncFileUpload/AsyncFileUpload.aspx

2 голосов
/ 18 июня 2010

Причина, по которой триггер обратной передачи не работает в вашем случае, заключается в том, что элемент управления FileUpload имеет значение visible = false. Если вместо этого вы используете display: none, триггер обратной передачи будет работать.

0 голосов
/ 19 декабря 2013

Это работает просто отлично, я наконец решил проблему ... ButtonSubmit перезагружается триггером, чтобы страница получила информацию от элемента управления.

 <asp:updatepanel runat="server" id="UpdatePanel1">
     <contenttemplate>
         <asp:FileUpload runat="server" id="FileUpload1" />
         <asp:button runat="server" id="ButtonSubmit" text="Postback" />
     </contenttemplate>
     <triggers>
         <asp:postbacktrigger controlid="ButtonSubmit" />
     </triggers>

 </asp:updatepanel>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...