Как я могу изменить информацию о файле в элементе управления загрузкой файлов Ajax ,Asp.net(VB)?

0

Вопрос

Я создаю загрузку файла перетаскивания с помощью элемента управления загрузкой файлов Ajax в Asp.net(VB). Я хочу показать имя файла, загруженную дату и время, размер файла при перетаскивании на панель. Что я могу сделать для этой настройки? Я мог бы изменить текст для выпадающего списка, например

$(document).ready(function () {

            
            Sys.Extended.UI.Resources.AjaxFileUpload_Pending = "保留中";
            Sys.Extended.UI.Resources.AjaxFileUpload_Remove = "削除";
            Sys.Extended.UI.Resources.AjaxFileUpload_Uploaded = "アップロード済";
            Sys.Extended.UI.Resources.AjaxFileUpload_Uploading = "アップロード中";
            Sys.Extended.UI.Resources.AjaxFileUpload_UploadedPercentage = "アップロード中 {0} %";
            Sys.Extended.UI.Resources.AjaxFileUpload_Upload = "アップロード";

            document.getElementsByClassName
            $(".ajax__fileupload_dropzone").text("ここにファイルをドロップ");

            document.getElementsByClassName
            $(".ajax__fileupload_uploadbutton").text("アップロード");
            
        });

Но я не знаю, как изменить отображение информации о файле.

Это моя форма перетаскивания, и я хочу перейти с application/pdf Для uploaded datetime

enter image description here

ajax asp.net vb.net webforms
2021-11-24 05:46:37
1

Лучший ответ

0

Вы не можете по-настоящему отображать "время" загрузки до тех пор, пока пользователь не начнет.

Вы УЖЕ можете видеть размер файла в шапке экрана, так зачем это нужно?

у тебя есть:

enter image description here

итак, выше вы видите имя файла, вы видите размер файла.

Однако до тех пор, пока вы не нажмете кнопку загрузки и не начнете загружать файлы, вы еще не знаете время загрузки, не так ли?

Итак, когда вы нажмете "Загрузить файлы", каждый выбранный файл будет загружен, и на стороне сервера (код позади) у вас есть это:

Protected Sub AjaxFileUpload1_UploadComplete(sender As Object, e As AjaxControlToolkit.AjaxFileUploadEventArgs) Handles AjaxFileUpload1.UploadComplete

    Dim strFileSave As String
    strFileSave = Server.MapPath("~/Content/" & e.FileName)
    AjaxFileUpload1.SaveAs(strFileSave)

    ' now code to add say to a database table of files up-loaded.

    Using conn As New SqlConnection(My.Settings.TEST4)
        Dim strSQL = "INSERT IGNORE INTO MyUpoadFiles (FileName, UpLoadTime, Size, User_id) " &
                     "VALUES (@File, @Time,@Size, @User)"

        Using cmdSQL As New SqlCommand(strSQL, conn)
            conn.Open()
            With cmdSQL.Parameters
                .Add("@File", SqlDbType.NVarChar).Value = e.FileName
                .Add("@Time", SqlDbType.DateTime).Value = Date.Now
                .Add("@Size", SqlDbType.Int).Value = e.FileSize
                .Add("@User", SqlDbType.Int).Value = Membership.GetUser.ProviderUserKey
            End With
            cmdSQL.ExecuteNonQuery()
        End Using
    End Using


End Sub

Теперь, когда ВСЕ файлы загружены, на стороне сервера даже будет загружено все, и тогда вы сможете взять приведенный выше список/таблицу и отобразить загруженные файлы вместе с именем файла, размером и временем.

Но у вас действительно нет возможности отображать информацию о файле, например, во сколько до этого момента вы загрузили файл, а затем у вас есть время, верно?

Редактировать:

Возможно, вышеприведенная идея была не совсем ясна. Я предлагаю, чтобы у вас был загрузчик на странице.

Итак, допустим, мы опустим эту разметку:

        <div style="width:40%;padding:25px">
        <ajaxToolkit:AjaxFileUpload ID="AjaxFileUpload1" runat="server" 
            OnClientUploadCompleteAll="MyCompleteAll"  ChunkSize="16384" />

            <asp:Button ID="cmdDone" runat="server" Text="Done" CssClass="btn" ClientIDMode="Static"/>
            <script>
                function MyCompleteAll() {
                    $('#cmdDone').click()
                  }
            </script>
            <asp:GridView ID="Gfiles" runat="server" CssClass="table"></asp:GridView>
        </div>

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

Итак, теперь у нас есть это:

enter image description here

Мы нажали загрузить, и теперь мы видим это:

enter image description here

Теперь мы должны (должны) скрыть кнопку "Готово" - у нас есть возможность загрузить, нажав на эту кнопку "Готово" для нас.

Так что эта кнопка теоретически должна стать такой, чтобы скрыть ее:

 <asp:Button ID="cmdDone" runat="server" Text="Done"
   style="display:none" ClientIDMode="Static"/>

И код для этой кнопки такой:

Protected Sub cmdDone_Click(sender As Object, e As EventArgs) Handles cmdDone.Click

    Dim rstFiles As New DataTable
    Using conn As New SqlConnection(My.Settings.TEST4)
        Dim strSQL As String = "select FileName, UpLoadTime, Size, User_id from MyUpLoadFiles"
        Using cmdSQL As New SqlCommand(strSQL, conn)
            conn.Open()
            rstFiles.Load(cmdSQL.ExecuteReader)
        End Using
    End Using

    Gfiles.DataSource = rstFiles
    Gfiles.DataBind()

    ' hide up-loader
    AjaxFileUpload1.Visible = False
End Sub
2021-11-26 04:01:16

Альберт, спасибо тебе за твой ответ. Я все еще не могу работать над этой частью, потому что мне нужно заняться другим проектом, но я попробую ответить на ваш вопрос, как только смогу. Ваш ответ действительно указал на мой проект. Спасибо тебе большое. Ты меня очень сильно спасаешь.
Chang

Здравствуйте, я попробовал с вашим кодом , и когда я нажму кнопку загрузки, данные могут быть вставлены в таблицу . Затем я сделал команду select и установил в datatable, но мое представление сетки не может отображаться полностью и не скрывало поле ajaxfileupload. Я выполнил отладку, и в моем представлении сетки были данные из моей таблицы БД.
Chang

Ну, когда мы загружаем файлы, они добавляются в эту таблицу. но когда ВСЕ файлы (или, может быть, вы выбрали только один файл) загружены, у нас есть кнопка "готово". Я, конечно, не хочу, чтобы пользователям приходилось нажимать кнопку "Готово", поэтому обратите внимание, как мы подключили КЛИЕНТСКУЮ сторону "скомпилировать все события" с помощью некоторого JavaScript, чтобы нажать эту кнопку для нас. Я имею в виду, что для тестирования просто дайте файлу (или файлам) загрузиться. А затем нажмите на ту единственную кнопку, которая запускает код, чтобы теперь взять значения из таблицы базы данных и отобразить их в таблице. Как уже отмечалось, нам нужно будет добавить идентификатор пользователя в эту таблицу.
Albert D. Kallal

Поэтому я не хотел, чтобы пользователям приходилось нажимать эту кнопку, когда это будет сделано - вот что делает небольшое количество JavaScript - я предполагал, что у вас есть jQuery, доступный на этой странице (не так ли????). И как только вы убедитесь, что это работает, мы скроем эту кнопку "готово". Но, если вы не подключите этот js-код, чтобы нажать эту кнопку (так КАК у нас ДОЛЖНА БЫТЬ полная обратная связь!!! - тебе НУЖНО вернуть этот пост. Вы не можете поместить код отображения сетки в событие загрузки файла ajax на стороне сервера-вы ДОЛЖНЫ нажать кнопку для обратной отправки. Поэтому следуйте приведенной выше разметке с кодом js, чтобы нажать на кнопку.
Albert D. Kallal

Обратите внимание выше, как код для удаления сетки находится в кнопке "Готово" при нажатии кнопки "Готово". Поэтому, чтобы было ясно, мы не можем поместить код отображения сетки ни в одно из событий управления загрузкой файла ajax. Нам нужна эта отдельная кнопка. Для тестирования просто нажмите кнопку "Самолет Джейн" на веб-странице. После завершения загрузки нажмите на эту кнопку, чтобы запустить код сетки отображения. Как только вы заставите это работать, затем добавьте приведенный выше код js для автоматического нажатия этой кнопки. А затем добавьте стиль "отображение:нет", чтобы скрыть эту кнопку от пользователя.
Albert D. Kallal

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................