yiwai 发表于 2015-9-26 09:07:20

SharePoint文档上传管理

  
  前台代码:
  <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="FileUpload.ascx.cs" Inherits="UploadFile.FileUpload" %>
<table>
<tr>
<td >
请选择列表:
</td>
<td>
<asp:DropDownList ID="ddlListName" runat="server" OnSelectedIndexChanged="ListTileNameDrp_SelectedIndexChanged" Width="122px" AutoPostBack="true">
</asp:DropDownList>
</td>
</tr>
    <tr>
      <td>
            请选择文件夹:</td>
      <td>
            <asp:DropDownList ID="ddlFolderName" runat="server" Width="122px">
            </asp:DropDownList></td>
    </tr>
    <tr>
      <td>
            部门:</td>
      <td>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></td>
    </tr>
    <tr>
      <td colspan="2">
            <asp:FileUpload ID="FileUpload1" runat="server" Width="250px" /></td>
    </tr>
    <tr>
      <td colspan="2">
            <asp:Button ID="Button1" runat="server" Text="上载" Width="51px" /></td>
    </tr>
</table>

  后台代码:
  
  
  using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.SharePoint;
using System.IO;
  namespace UploadFile
{
    public partial class FileUpload : System.Web.UI.UserControl
    {
      protected void Page_Load(object sender, EventArgs e)
      {
            if(!IsPostBack)
            {
                BindListName();
            }
      }
      //绑定列表库
      public void BindListName()
      {
            SPSite site = new SPSite("http://foxconn-shentan/");
            SPWeb myWeb =site.AllWebs["Docs"];
            SPListCollection collList = myWeb.Lists;
            ddlListName.Items.Clear();
            foreach(SPList myList in collList)
            {
                ddlListName.Items.Add(new ListItem(myList.Title));
            }
      }
      //列表库选择项改变时,级联绑定列表库下的文件库
      protected void ListTileNameDrp_SelectedIndexChanged(object sender, EventArgs e)
      {
            SPSite site = new SPSite("http://foxconn-shentan/");
            SPWeb myWeb = site.AllWebs["Docs"];
            SPList myList=myWeb.Lists;
            ddlFolderName.Items.Clear();
            ddlFolderName.Items.Add("根目录");
            foreach (SPListItem myFolder in myList.Folders)
            {
                ddlFolderName.Items.Add(new ListItem(myFolder.Name));
            }
      }
      //弹出消息框
      private void ShowMessage(string txtMsg)
      {
            Literal msg = new Literal();
            msg.Text = "<script>alert('"+txtMsg+"')</script>";
            Page.Controls.Add(msg);
      }
      //给个用户添加权限
      public void AddedPermission(SPWeb spWeb,SPList spList,string fileName)
      {
            SPListItem listItem = null;
            //遍历列表下的所有记录
            foreach(SPListItem item in spList.Items)
            {
                //哪一条记录的"名称"字段与上传的文档名称一致
                if(item["名称"].ToString()==fileName)
                {
                  listItem = spList.GetItemById(item.ID);
                  break;
                }
            }
            //断开原来列表项所继承的权限,使其可以设置独立权限
            listItem.BreakRoleInheritance(true);
            //将原来所继承的权限通通移除
            foreach(SPRoleAssignment roleAssignment in listItem.RoleAssignments)
            {
                roleAssignment.RoleDefinitionBindings.RemoveAll();
                spWeb.AllowUnsafeUpdates = true;
                roleAssignment.Update();
                listItem.Update();
            }
            //获取将要设置权限的用户
            SPUser myUser = SPContext.Current.Site.RootWeb.AllUsers["SHEN\\a"];
            //定义权限分配
            SPRoleAssignment myRoleAssignment = new SPRoleAssignment(myUser.LoginName,myUser.Email,myUser.Name,myUser.Notes);
            //绑定设置的权限
            myRoleAssignment.RoleDefinitionBindings.Add(spWeb.RoleDefinitions.GetByType(SPRoleType.Reader));
            //把这个权限加到我们的列表中
            listItem.RoleAssignments.Add(myRoleAssignment);
            listItem.Update();
      }
      //上载文档的方法
      public void UploadFile(string srcUrl,string destUrl,string fileName)
      {
            //特权提升,以管理员身份运行下列代码段
            SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                using (SPWeb myWeb=new SPSite(destUrl).OpenWeb())
                {
                  myWeb.AllowUnsafeUpdates = true;
                  if(!File.Exists(srcUrl))
                  {
                        throw new ArgumentException(String.Format("{0} does not exist",srcUrl),"srcUrl");
                  }
                  SPList list = myWeb.Lists["文档"];
                  FileStream fStream = File.OpenRead(srcUrl);
                  byte[] contents=new byte;
                  fStream.Read(contents,0,(int)fStream.Length);
                  fStream.Close();
                  //将文件加入到列表中
                  if (ddlFolderName.SelectedValue == "根目录")
                  {
                        SPFile file=list.RootFolder.Files.Add(fileName, contents);
                        SPListItem item = file.Item;
                        string bumeng = TextBox1.Text.ToString();
                        item["部门"] = bumeng;
                        item.Update();
                  }
                  else
                  {
                        Guid id = Guid.Empty;
                        foreach(SPListItem subFolder in list.Folders)
                        {
                            if(subFolder.Name==ddlFolderName.SelectedValue)
                            {
                              id = subFolder.UniqueId;
                              break;
                            }
                        }
                        SPFolder myFolder = myWeb.GetFolder(id);
                        SPFile file= myFolder.Files.Add(fileName,contents);
                        SPListItem item = file.Item;
                        string bumeng = TextBox1.Text.ToString();
                        item["部门"]= bumeng;
                        item.Update();
                        
                  }
                  //设置列表权限的
                  AddedPermission(myWeb,list,fileName);
                }
            });
      }
      protected void Button1_Click(object sender, EventArgs e)
      {
            if(FileUpload1.FileName ==string.Empty)
            {
                ShowMessage("请上传您要上传的文件");
                return;
            }
            string fileName = FileUpload1.FileName;
            string filePath = FileUpload1.PostedFile.FileName;
            string fileType = fileName.Substring(fileName.LastIndexOf('.') + 1, 3).ToLower();
            if (fileType != "doc" && fileType != "docx")
            {
                ShowMessage("您上传的文件类型不正确,请重选上传的文件");
                return;
            }
            else
            {
                UploadFile(filePath, "http://foxconn-shentan/Docs/Documents/", fileName);
                ShowMessage("上传成功");
            }
      }
    }
}
  
页: [1]
查看完整版本: SharePoint文档上传管理