如何在 Ajax 文件上传控制 Asp.net(VB) 中更改文件信息?

How can I change File Info in Ajax File Upload Control ,Asp.net(VB)?

我正在使用 Asp.net(VB) 中的 Ajax 文件上传控件创建拖动文件上传。 我想在拖入面板时显示文件名、上传日期时间、文件大小。 我该怎么做该设置? 我可以像

这样更改 droparea 的文本
$(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

在用户启动之前,您无法真正显示上传的“时间”。

您已经可以在屏幕截图中看到文件大小,为什么还需要那个?

你有:

所以在上面,你看到了文件名,你看到了文件大小。

但是,在您点击上传并开始上传文件之前,您还不知道上传时间,对吗?

所以,当你点击上传文件时,每个选择的文件都会被上传,在服务器端(代码后面),你有这个:

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 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

现在,当所有文件都上传后,服务器端甚至 UpLoadComplete 都会触发,然后你可以使用上面的 list/table 并显示上传的文件以及文件名、大小, 和时间。

但是,你真的没有能力显示文件信息,比如什么时候上传文件然后才有时间,对吧?

编辑:

可能上面的思路不是很清楚。我的建议是您在页面上有上传程序。

所以,假设我们加入这个标记:

        <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>

并注意我们如何使用客户端完成点击。

所以,我们现在有这个:

我们点击上传,现在我们看到了:

现在我们应该(需要)隐藏“完成”按钮 - 我们可以为我们点击完成按钮进行上传。

所以理论上那个按钮应该变成这个来隐藏它:

 <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