FileUpload не работает при вложении в UpdatePanel? C#

 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                        <asp:FileUpload onchange="clickTheButton();" ID="FileUpload1" runat="server" />
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="Button1" />
                </Triggers>
</asp:UpdatePanel>

Кнопка 1 вне панели обновления и JavaScript, который запущен, когда пользователь добавляет, что файл в поле загрузки - это:

function clickTheButton() {
            document.getElementById('<%= Button1.ClientID %>').click();
        }

Проблема проста. FileUpload1. HasFile == ложь. Я не знаю, почему это, но когда я поместил его в панель обновления, это прекращает работать.

Я видел некоторые другие потоки на этом. Но ни один из них не отвечает, почему это происходит, они просто указывают на вещи, которые можно загрузить.

Править: Действительно моя главная причина для желания сделать это - то, так, чтобы я мог получить a.. Загрузка Файла.. Тег для появления, в то время как клиент загружает на сервер и как только он завершился, отобразите его в datalist. Я просто наклон заставляю UpdateProgress работать.

16
задан Jason 21 January 2010 в 20:31
поделиться

2 ответа

В основном вам просто нужно сделать вашу кнопку сделать полную информацию, чтобы отправить файл. Также убедитесь, что у вас есть this.form.enctype = "multipart / form-data"; Установите в свой код, или вы можете поместить на эту страницу. AsyncPostbacks не работают с файлами по соображениям безопасности, как уже упоминалось, без взломов. (Я никогда не смог добраться до работы).

 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
      <ContentTemplate>
           <asp:FileUpload onchange="clickTheButton();" ID="FileUpload1" runat="server" />
      </ContentTemplate>
      <Triggers>
         <asp:PostBackTrigger ControlID="Button1" />
      </Triggers>
 </asp:UpdatePanel>
15
ответ дан 30 November 2019 в 22:10
поделиться

Для целей безопасности браузеры не позволяют публиковать файлы через JavaScript. Представьте, что сможете ли я написать немного JavaScript для Asynchrone, отправьте содержимое вашей папки документов на мой сервер.

Итак, методы размещения JavaScript-ISH, например, xmlhtttrequest, используемые updatePanel, не будут работать.

Этот пост описывает достойную работу, если вы находитесь на 3.5 SP1. http://geeksswithblogs.net/ranganh/Archive/2009/10/01/fileupload-in-updatepanel-asp.net-iby-gmail.aspx

И этот пост описывает пару оборотов, если вы D предпочитаю не использовать ajaxcontroltoolkit. http://geekswithblogs.net/ranganh/archive/2008/04/01/file-upload-in-updatepanel-asp.net-ajax.aspx

4
ответ дан 30 November 2019 в 22:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: