Exemplo n.º 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string listId = Request.Params["listId"];

            if (string.IsNullOrEmpty(listId))
            {
                return;
            }

            SPList list = SPContext.Current.Web.Lists.GetList(new Guid(listId), false);

            if (!list.IsDocumentLibrary())
            {
                return;
            }

            string pItemIds = Request.Params["itemIDs"];

            if (string.IsNullOrEmpty(pItemIds))
            {
                return;
            }

            SPDocumentLibrary library = (SPDocumentLibrary)list;

            string[] sItemIds = pItemIds.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            int[]    itemsIDs = new int[sItemIds.Length];
            for (int i = 0; i < sItemIds.Length; i++)
            {
                itemsIDs[i] = Convert.ToInt32(sItemIds[i]);
            }

            if (itemsIDs.Length > 0)
            {
                using (MemoryStream ms = new MemoryStream())
                {
                    using (ZipFileBuilder builder = new ZipFileBuilder(ms))
                    {
                        foreach (int id in itemsIDs)
                        {
                            SPListItem item = library.GetItemById(id);
                            if (item.IsFolder())
                            {
                                AddFolder(builder, item.Folder, string.Empty);
                            }
                            else
                            {
                                AddFile(builder, item.File, string.Empty);
                            }
                        }

                        builder.Finish();
                        WriteStreamToResponse(ms);
                    }
                }
            }
        }