关闭

C#代码上传文件到SharePoint文档库并给字段赋值

发表于:2013-11-05 10:50

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:crazygolf    来源:51Testing软件测试网采编

  在SharePoint产品的各个版本中,文档库一直都是一项重要的存储容器,用来存储大量的文件而设置的。在SharePoint 2010版本中,又增加了其他库类型,例如:表单库、图片库、幻灯片库等,但这些库都是文档库的衍生产品,都还可以当作文档库来使用。
  其实在文档库的内部结构中就是列表的一种特殊形式,有时候可以将文档库当作列表对象SPList来操作和使用。只有一些与文件相关的操作,才会使用文档库对象SPDocumentLibrary来操作。
  在SharePoint文档库中,可以直接使用自带的上载功能将文件上载到文档库中,可以一次上载一个,也可以一次上载多个。但有时候,我们可能会在列表的表单中或其他地方自定义一个上载按钮来将文件上载到某个文档库中,这就需要使用SharePoint对象模型来操作了。
  这里只是作个演示,直接使用可视Web部件来开发这个自定义的上载功能。在ascx页面上放一个FileUpload和一个Button控件,代码如下:
1 <div id="Upload">
2     <asp:FileUpload ID="FileUpload1" runat="server" />
3     <asp:Button ID="Button1" runat="server" Text="上载到文档库" onclick="Button1_Click" />
4 </div>
  然后在ascx.cs中编写如下代码:
01 protected void Button1_Click(object sender, EventArgs e)
02 {
03     this.UploadFileToDocLib(SPContext.Current.Web, "共享文档", this.FileUpload1, 1);
04 }
05
06 /// <summary>
07 /// 将文件上载到文档库中,并实现对字段的赋值
08 /// </summary>
09 /// <param name="web"></param>
10 /// <param name="docLibName"></param>
11 /// <param name="fUpload"></param>
12 /// <param name="itemId"></param>
13 public void UploadFileToDocLib(SPWeb web, string docLibName, FileUpload fUpload, int itemId)
14 {
15     SPList list = web.Lists.TryGetList(docLibName);
16     SPDocumentLibrary docLib = (SPDocumentLibrary)list;
17     if (fUpload.HasFile)
18     {
19         string fn = System.IO.Path.GetFileName(fUpload.PostedFile.FileName);
20         System.IO.Stream stm = fUpload.PostedFile.InputStream;
21         int iLength = (int)stm.Length;
22         if (iLength > 0)
23         {
24             SPFolder rootFolder = docLib.RootFolder;
25             Byte[] filecontent = new byte[iLength];
26             stm.Read(filecontent, 0, iLength);
27             SPFile f = rootFolder.Files.Add(fn, filecontent);
28             SPListItem item = f.Item;
29             item["ItemID"] = itemId;
30             item.SystemUpdate();
31             stm.Close();
32         }
33     }
34 }
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号