通过编程的方式给列表项添加附件
最近项目中有一个需求,给列表项添加附件。用列表来保存信息是非常方便的,但是在附加文件时遇到了一些周折。在此记录下所用的部分代码,欢迎和大家多多交流。
假设页面有一个上传控件,名叫“FileUpload1”,在点击上传之后,后台得到上传的文件,然后将文件附加到列表项中。
if (FileUpload1.HasFile)
{
//以下代码得到文件流
Stream fStream = FileUpload1.PostedFile.InputStream;
byte[] contents = new byte[fStream.Length];
fStream.Read(contents, 0, (int)fStream.Length);
fStream.Close();
fStream.Dispose();
FileInfo file = new FileInfo(FileUpload1.PostedFile.FileName);
SPListItem item = list.GetItemById(itemId);//要给该记录附加文件
if (item != null)
{
item.Attachments.Add(file.Name, contents);//给该记录附加文件,可以附加多个附件。
item.Update();
}
}
以上是给列表项附加一个文件,下面代码是直接给文档库上传一个文件。如果以资源管理器的方式打开一个文档库,可以看到,文档库中的文件形式和本地的文件夹类似,所以给文档库上传文件的上传方式和asp.net往服务器传文件几乎是一样的。
using (SPWeb site = SPContext.Current.Web)
{
try
{
site.AllowUnsafeUpdates = true;
FileStream fStream = FileUpload1.PostedFile.InputStream;
byte[] contents = new byte[fStream.Length];
fStream.Read(contents, 0, (int)fStream.Length);
fStream.Close();
site.Files.Add(destUrl, contents, true);// destUrl是文件在服务器上存储的地址,例如http://mysite/document/abc.txt
site.AllowUnsafeUpdates = false;
}
catch
{ }
}