SharePoint 上传附件

本文介绍如何在SharePoint中实现自定义列表的项目创建及附件上传功能。通过SPListItem和SPAttachmentCollection对象,开发者能够实现新建项目并上传附件,同时文章还强调了正确的文件字节流处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

更改SharePoint自定义列表的新建页面,开发自定义控件,通过SPListItem newItem = List.Items.Add(), newItem["Title"]="Title"; newItem.Update(),进行新建项目操作。

若需要上传附件,需要通过操作SPAttachmentCollection对象:

ContractedBlock.gifExpandedBlockStart.gifCode
SPAttachmentCollection attachments = newItem.Attachments;
                    attachments.Add(item.AttachFileName, item.AttachBytes);
                    newItem.Update();

 

注意: 附件是和SPListItem关联的,必须确认newItem已经保存(newItem.Update());

    或者调用attachmentns.AddNow(AttachFileName,AttachBytes)。

 

上传附件,将附件转换成字节流存储到数据库中,在自定义控件中可以使用FileUpLoad控件,后台处理直接去FileUpLoad.FileBytes获取文件字节,不要再从其PostedFile.InputStream中获取流,否则文件虽然被上传了,但有可能文件内容空白,虽然大小、页数、字数都在。

标准的写法:

ContractedBlock.gifExpandedBlockStart.gifCode
if (uploadFile.HasFile && uploadFile.PostedFile != null && uploadFile.PostedFile.ContentLength > 0)
            {
                pt.AttachFileName 
= uploadFile.FileName;
                pt.AttachBytes 
= uploadFile.FileBytes;
            }

 

 

可能会出错的写法:

 

ContractedBlock.gifExpandedBlockStart.gifCode
uploadObj.FileBytes = new byte[fileUpload.PostedFile.ContentLength];
Stream fStream 
= fileUpload.PostedFile.InputStream;
fStream.Read(uploadObj.FileBytes, 
0, fileUpload.PostedFile.ContentLength);
fStream.Close();
fStream.Dispose();
uploadObj.FileBytes 
= fileUpload.FileBytes;

这种写法在ASPX页面是没问题,但是放在Sharepoint页面下就会出现上面的情况。

原因我也不太清楚,是否是Sharepoint的HttpModule有过此类的过滤或者其他的条件,有知道的朋友可以给指点下。

转载于:https://www.cnblogs.com/jerryshi/archive/2009/03/26/1422559.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值