English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تنفيذ تحميل بيانات معينة عند النقر باستخدام jQuery وتحميل ملفات واحدة بالضغط على زر واحد

في الآونة الأخيرة، واجهت مشكلة أثناء العمل على نظام إدارة التدريب، حيث يتطلب النقر على البيانات الم绑定 لتحميل الملفات المحددة، ويجب القيام بذلك بشكل جماعي (البيانات الم绑定 ليست datagrid، يتم تجميع البيانات الم绑定 في الخلفية).

效果图如下:

大体思路:

1.jquery得到选中的绑定数据的id,将这个id赋值到数组中,最后将这个数组的值赋值给页面中创建的隐藏变量

2.后台获取到隐藏变量的值,并将它循环数组取值,得到绑定值的下载地址,最后打包下载

首先html中div根据后台绑定

 <div id="downloadInfo" runat="server"></div>

 其次是下载附件的选择,利用jquery实现,并且将值赋值给页面中的隐藏变量,代码如下:
 

// 下载附件的选择
  $attach = $("#download-list");
  var arr = []
  $attach.on('click', '.no', function () {
    $(this).toggleClass('checked');//设置和移除,选中与不选中
    if ($(this).hasClass('checked')) {
      var guid = $(this).children("#hidAttachGuid").val();
      arr.push(guid);//将guid添加到arr数组中
    }
    else
    {//取消选中时
      var guid = $(this).children("#hidAttachGuid").val();
      var n = arr.indexOf(guid);
      if (n != -1)
      arr.splice(n, 1);//将指定不选中的guid移除arr数组
    }
    $("[id$='arrayGuid']").val(arr);
  });

因为是后台拼接的,把button也拼接在了后台,后台button 调用js

<button type='button' class='one-download' onclick='download()'>一键下载</button>
function download() {
      $("#btnDownload").click();
    }

js触发隐藏button事件

<span style="display: none">
   <asp:Button ID="btnDownload" OnClick="btnDownload_Click" Text="确定" runat="server" />
    <input type="text" id="arrayGuid" runat="server" />
</span>

كود التحميل المدمج للحزمة واحدة

protected void btnDownload_Click(object sender, EventArgs e)
    {
      //ZipFileByCode();
      string attachGuid = arrayGuid.Value;
      string[] sArray = attachGuid.Split(',');
      List<string> list = جديد List<string>();
      للمرة الأولى (في string i في sArray)
      {
        //هذا هو الدوران للحصول على جميع ids المطلوبة للتحميل
      }
      Download(list, ""+lblCourseName.Text+"相关附件材料.rar");
    }
public void ZipFileByCode()
    {
      MemoryStream ms = جديد MemoryStream();
      بافر [] بيت = null;
      استخدام (ZipFile file = ZipFile.Create(ms))
      {
        file.BeginUpdate();
        file.NameTransform = جديد MyNameTransfom();//من خلال هذا مساعد الاسم، يمكن معالجة أسماء الملفات بعض المعالجات. في الحالة الافتراضية، سيتم إنشاء مجلدات ذات صلة في zip تلقائيًا بناءً على مسار الملف.
        file.Add(Server.MapPath("/Content/images/img01.jpg"));
        file.CommitUpdate();
        بافر = جديد بيت [مطول ms];
        ms.Position = 0;
        ms.Read(buffer, 0, buffer.Length);
      }
      Response.AddHeader("content-disposition", "attachment;filename=test.zip");
      Response.BinaryWrite(buffer);
      Response.Flush();
      Response.End();
    }
private void Download(IEnumerable<string> files, string zipFileName)
    {
      //حسب ملف المختار تعبئة التحميل 
      MemoryStream ms = جديد MemoryStream();
      بافر [] بيت = null;
      استخدام (ZipFile file = ZipFile.Create(ms))
      {
        file.BeginUpdate();
        file.NameTransform = جديد MyNameTransfom();//من خلال هذا مساعد الاسم، يمكن معالجة أسماء الملفات بعض المعالجات. في الحالة الافتراضية، سيتم إنشاء مجلدات ذات صلة في zip تلقائيًا بناءً على مسار الملف. 
        للمرة الأولى (في var item في files)
        {
          file.Add(item);
        }
        //file.Add(Server.MapPath("../../BigFileUpLoadStorage/1.png"));
        file.CommitUpdate();
        بافر = جديد بيت [مطول ms];
        ms.Position = 0;
        ms.Read(buffer, 0, buffer.Length);
      }
      Response.AddHeader("content-disposition", "attachment;filename=" + zipFileName);
      Response.BinaryWrite(buffer);
      Response.Flush();
      Response.End();
    }

مثل كود pageload في نفس المستوى

public class MyNameTransfom : ICSharpCode.SharpZipLib.Core.INameTransform
  {
    #region INameTransform Member
    public string TransformDirectory(string name)
    {
      return null;
    }
    public string TransformFile(string name)
    {
      return Path.GetFileName(name);
    }
    #endregion
  }

هذا هو نهاية محتويات هذا المقال، نأمل أن تكون قد ساعدتكم في التعلم، ونأمل أيضًا أن تدعموا تعليماتي.

بيان: محتويات هذا المقال تم جمعها من الإنترنت، وتحتفظ بالحقوق الملكية للمالك الأصلي، تم جمع المحتويات من قبل المستخدمين عبر الإنترنت بشكل متعاون، ويحتفظ الموقع بالحقوق الملكية، لم يتم تعديل المحتويات بشكل يدوي، ولا يتحمل الموقع أي مسؤولية قانونية متعلقة بذلك. إذا كنت قد وجدت محتوى يشتبه في انتهاك حقوق النسخ، فلا تتردد في إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال # بـ @) لإبلاغنا، وقدم الدليل على الدليل، إذا تم التحقق من ذلك، سيتم حذف المحتوى المزعوم فورًا.

الأسئلة التي قد تهمك