Heim > php教程 > PHP开发 > Hauptteil

jquery arbeitet mit .NET zusammen, um Click-to-Specify-Bindungsdaten zu realisieren und kann diese mit einem Klick herunterladen

高洛峰
Freigeben: 2016-12-08 14:14:15
Original
1161 Leute haben es durchsucht

Sie müssen auf die gebundenen Daten klicken, um die angegebenen Anhänge herunterzuladen und sie stapelweise herunterzuladen (die gebundenen Daten sind kein Datagrid, sondern eine Hintergrund-Spleißbindung).

Das Rendering ist wie folgt:

jquery arbeitet mit .NET zusammen, um Click-to-Specify-Bindungsdaten zu realisieren und kann diese mit einem Klick herunterladen

Die allgemeine Idee:

1.jquery ruft die ID der ausgewählten Bindung ab Daten und weisen Sie diese ID einem Array zu und weisen Sie schließlich den Wert dieses Arrays der auf der Seite erstellten versteckten Variablen zu

2. Rufen Sie den Wert der versteckten Variablen im Hintergrund ab und durchlaufen Sie ihn in einer Schleife Array, um den gebundenen Wert zu erhalten. Laden Sie die Adresse herunter und verpacken und laden Sie sie schließlich herunter.

Zuerst wird das Div im HTML entsprechend dem Hintergrund gebunden

<div id="downloadInfo" runat="server"></div>
Nach dem Login kopieren

Zweitens wird die Auswahl zum Herunterladen von Anhängen mit jquery Implementiert und der ausgeblendeten Variablen auf der Seite zugewiesen. Der Code lautet wie folgt:

// 下载附件的选择
  $attach = $("#download-list");
  var arr = []
  $attach.on(&#39;click&#39;, &#39;.no&#39;, function () {
    $(this).toggleClass(&#39;checked&#39;);//设置和移除,选中与不选中
    if ($(this).hasClass(&#39;checked&#39;)) {
      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$=&#39;arrayGuid&#39;]").val(arr);
  });
Nach dem Login kopieren

Da es im Hintergrund gespleißt ist, wird die Schaltfläche auch gespleißt. Im Hintergrund ruft die Hintergrundschaltfläche js auf

<button type=&#39;button&#39; class=&#39;one-download&#39; onclick=&#39;download()&#39;>一键下载</button>
function download() {
      $("#btnDownload").click();
    }
Nach dem Login kopieren

js löst das Ereignis „Versteckte Schaltfläche“ aus

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

Ein-Klick-Paket-Download-Code im Hintergrund:

protected void btnDownload_Click(object sender, EventArgs e)
    {
      //ZipFileByCode();
      string attachGuid = arrayGuid.Value;
      string[] sArray = attachGuid.Split(&#39;,&#39;);
 
      
      List<string> list = new List<string>();
      foreach (string i in sArray)
      {
        //这里是循环得到指定需要下载的所有id
  
      }
 
      Download(list, ""+lblCourseName.Text+"相关附件材料.rar");
    }
Nach dem Login kopieren

public void ZipFileByCode()
    {
      MemoryStream ms = new MemoryStream();
      byte[] buffer = null;
 
      using (ZipFile file = ZipFile.Create(ms))
      {
        file.BeginUpdate();
        file.NameTransform = new MyNameTransfom();//通过这个名称格式化器,可以将里面的文件名进行一些处理。默认情况下,会自动根据文件的路径在zip中创建有关的文件夹。
 
        file.Add(Server.MapPath("/Content/images/img01.jpg"));
        file.CommitUpdate();
 
        buffer = new byte[ms.Length];
        ms.Position = 0;
        ms.Read(buffer, 0, buffer.Length);
      }
 
 
      Response.AddHeader("content-disposition", "attachment;filename=test.zip");
      Response.BinaryWrite(buffer);
      Response.Flush();
      Response.End();
 
    }
Nach dem Login kopieren

private void Download(IEnumerable<string> files, string zipFileName)
    {
      //根据所选文件打包下载
      MemoryStream ms = new MemoryStream();
      byte[] buffer = null;
      using (ZipFile file = ZipFile.Create(ms))
      {
        file.BeginUpdate();
        file.NameTransform = new MyNameTransfom();//通过这个名称格式化器,可以将里面的文件名进行一些处理。默认情况下,会自动根据文件的路径在zip中创建有关的文件夹。
 
        foreach (var item in files)
        {
          file.Add(item);
        }
        //file.Add(Server.MapPath("../../BigFileUpLoadStorage/1.png"));
        file.CommitUpdate();
        buffer = new byte[ms.Length];
        ms.Position = 0;
        ms.Read(buffer, 0, buffer.Length);
      }
      Response.AddHeader("content-disposition", "attachment;filename=" + zipFileName);
      Response.BinaryWrite(buffer);
      Response.Flush();
      Response.End();
    }
Nach dem Login kopieren

Gleicher Ebenencode wie beim Seitenladen

public class MyNameTransfom : ICSharpCode.SharpZipLib.Core.INameTransform
  {
 
    #region INameTransform 成员
 
    public string TransformDirectory(string name)
    {
      return null;
    }
 
    public string TransformFile(string name)
    {
      return Path.GetFileName(name);
    }
 
    #endregion
  }
Nach dem Login kopieren


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage