Ajax Dosya Yükleme Denetiminde Dosya Bilgilerini nasıl değiştirebilirim ,Asp.net (VB)?

0

Soru

Ajax Dosya Yükleme Denetimini kullanarak bir sürükle dosya yükleme oluşturuyorum Asp.net (VB). Panele sürüklediğimde dosya adını, yüklenen tarih saatini, dosya boyutunu göstermek istiyorum. Bu ayar için nasıl yapabilirim? Droparea için metni şu şekilde değiştirebilirim

$(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("アップロード");
            
        });

Ancak dosya bilgi ekranını nasıl değiştireceğimi bilmiyorum.

Bu benim sürükleme formum ve değiştirmek istiyorum application/pdf -e doğru uploaded datetime

enter image description here

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

En iyi cevabı

0

Kullanıcı başlayana kadar yükün "zamanını" gerçekten görüntüleyemezsiniz.

Ekran kapağınızdaki dosya boyutunu zaten görebiliyorsunuz, peki neden buna ihtiyaç duyuyorsunuz?

sahipsin:

enter image description here

yani yukarıda, dosya adını görüyorsunuz, dosya boyutunu görüyorsunuz.

Ancak, dosyaları yükleme ve yüklemeye başlayana kadar, henüz yükleme süresini henüz bilmiyorsunuz, değil mi?

Yani, dosyaları yukarı yükle düğmesine bastığınızda, seçilen her dosya yukarı yüklenir ve sunucu tarafında (arkasındaki kod) buna sahip olursunuz:

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

Şimdi, TÜM dosyalar yüklendiğinde, sunucu tarafı bile UpLoadComplete all tetiklenir ve daha sonra yukarıdaki listeyi/tabloyu alabilir ve yüklenen dosyaları dosya adı, boyut ve zamanla birlikte görüntüleyebilirsiniz.

Ancak, dosyayı yükleyene kadar saat kaçta olduğu gibi dosya bilgilerini görüntüleme yeteneğine sahip değilsiniz ve sonra zamanınız var, değil mi?

Düzenlemek:

Belki de yukarıdaki fikir o kadar açık değildi. Benim önerim Bu sayfa üzerinde loader var, şu var.

Yani, bu işaretlemeyi bıraktığımızı varsayalım:

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

Ve istemci tarafını nasıl kullandığımızı not edin.

Yani, şimdi buna sahibiz:

enter image description here

Yükle düğmesine bastık ve şimdi bunu görüyoruz:

enter image description here

Şimdi Bitti düğmesini gizlemeliyiz (yapmamız gerekiyor) - bizim için bitti düğmesine tıklayan yükleme var.

Yani teoride bu düğme onu gizlemek için bu hale gelmelidir:

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

Ve bu düğmenin kodu şudur:

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

Albert, Cevabın için teşekkürler. Bu kısmı hala çalışamıyorum çünkü başka bir proje yapmam gerekiyor ama en kısa sürede cevabınızı deneyeceğim. Cevabınız gerçekten projem için işaret etti. Seni çok Thx. Beni çok kurtardın.
Chang

Merhaba, kodunuzla denedim ve yükle düğmesine bastığımda veriler tabloya eklenebilir . Sonra bir select komutu yaptım ve datatable'da ayarladım ancak gridview'im tamamen gösteremiyor ve ajaxfileupload alanını gizlemedi. Hata ayıklama yaptım ve gridview'imde db tablomdan veri vardı.
Chang

Peki, biz bu kadar yük dosyaları, onlar eklenen tablo. ancak TÜM dosyalar (veya belki sadece bir dosya seçtiniz) yüklendiğinde, o zaman bu" bitti " düğmesine sahibiz. Elbette, kullanıcıların bu bitti düğmesini tıklamak zorunda kalmasını istemiyorum, bu yüzden "tüm olayları derle" İSTEMCİ tarafını bizim için bu düğmeyi tıklamak için bazı Javascript'lerle nasıl bağladığımızı not edin. Yani, test için, sadece dosyanın (veya dosyaların) yüklenmesine izin verin. Ve ardından, şimdi veri tabanı tablosundaki değerleri almak ve ızgarada görüntülemek için arkasındaki kodu çalıştıran tek düğmeye tıklayın. Belirtildiği gibi, bu tabloya user_id eklememiz gerekir.
Albert D. Kallal

Ben değil isteyen kullanıcılar için Tıklayın Bu düğme ne zaman yapılır - böyle küçük bir miktar JavaScript mu - ben mi kabul mü jQuery mevcut sayfayı (don hepimiz????). Ve bunun işe yaradığını doğruladıktan sonra, o "bitti" düğmesini gizleyeceğiz. Ancak, bu düğmeyi tıklamak için bu js kodunu bağlamazsanız(tam bir geri dönüş gerçekleşmemiz gerektiğinden!!! - bir post GEREKİR. Izgara görüntüleme kodunu sunucu tarafı ajax dosyası yükleme olayına koyamazsınız-geri gönderme için bir düğmeyi tıklatmanız gerekir. Bu nedenle, düğmeyi tıklamak için yukarıdaki işaretlemeyi js koduyla takip edin.
Albert D. Kallal

Yukarıda, kılavuzun görüntüleneceği kodun commadn bitti düğmesini tıklatma biçiminde olduğunu unutmayın. Açık olmak gerekirse, ızgara görüntüleme kodunu ajax dosyası yükleme denetimi olaylarından herhangi birine koyamayız. O ayrı düğmeye ihtiyacımız var. Test için, web sayfasına bir uçak jane düğmesi bırakmanız yeterlidir. Yükleme tamamlandıktan sonra, ekran kılavuz kodunu çalıştırmak için bu düğmeye tıklayın. Bunu çalıştırdıktan sonra, yukarıdaki js kodunu otomatik olarak bu düğmeye tıklayın. Ve sonra bu düğmeyi kullanıcıdan gizlemek için "display:none" stilini ekleyin.
Albert D. Kallal

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................