?
前臺代碼:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="FileUpload.ascx.cs" Inherits="UploadFile.FileUpload" %>
<table>
<tr>
<td? style="width:138px; height: 24px;">
請選擇列表:
</td>
<td style="width:133px; height: 24px;">
<asp:DropDownList ID="ddlListName" runat="server" OnSelectedIndexChanged="ListTileNameDrp_SelectedIndexChanged" Width="122px" AutoPostBack="true">
</asp:DropDownList>
</td>
</tr>
??? <tr>
??????? <td style="width: 138px">
??????????? 請選擇文件夾:</td>
??????? <td style="width: 133px">
??????????? <asp:DropDownList ID="ddlFolderName" runat="server" Width="122px">
??????????? </asp:DropDownList></td>
??? </tr>
??? <tr>
??????? <td style="width: 138px">
??????????? 部門:</td>
??????? <td style="width: 133px">
??????????? <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" style="text-align: right">
??????????? <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" 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[ddlListName.SelectedValue];
??????????? 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.Length];
??????????????????? 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("上傳成功");
??????????? }
??????? }
??? }
}
?