前台代码:
<%@ 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("上传成功");
}
}
}
}