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

Octavia ·
更新时间:2024-11-13
· 937 次阅读

  在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 }

  在此代码中,主要使用了文件流来实现上载到文件库功能,在此处要注意,一定要使用Stream对象,而不要使用FileStream对象,否则无法实现上载,并且会出现找不到文件的错误。   这段代码是将文档上载到文档库的根文件夹中,也是:   SPFile f = rootFolder.Files.Add(fn, filecontent),使用了根文件夹对象SPFolder,当然也可以上载到文档库的任意文件夹中,只要得到了相应文件夹的SPFolder对象即可。   如果还想将某些信息随着上载文件也要存储到文档库中,则可以使用上载对象Files.Add()返回的SPFile对象。SPFile对象中有一个 Item属性,使用此属性可以得到上载文件的SPListItem对象,这样可以给文档库中任意的字段赋值了。在上面的代码中,是给ItemID字段赋值。   将上面的代码部署,效果如图1所示:   在图1中选择好上载的文件,然后点击“上载到文档库”按钮,如图2所示:   图2是“共享文档”,其中可以看到在图1中上载过来的文档,并且还看到了给字段添加的值。以后再遇到自定义上载到文档库的功能,可以直接将上面的代码复制过来可以使用了。



c#代码 C# 字段 sharepoint 上传文件 赋值

需要 登录 后方可回复, 如果你还没有账号请 注册新账号