在类中保存文件的最佳方式



我想在类文件中保存一个文件。我正在编写一个附件用户控件。

通过上传控件上传文件后,我想在SharePoint上传文件之前将其保存在一个类中。

用户可以上传多个文件。

只有在用户点击save按钮之后,我才会保存所有文件和其他数据,文件到SharePoint,其他数据到数据库。

这是我的类

public class Document :
    {
        public string documentName, documentPath, spServerURL, spDocumentLibraryURL;
        public DateTime lodegmentDate;
        public System.Web.HttpPostedFile postedFile;
    }

我该如何处理?可以用httpPostedFile吗?在我的更新,我可以将SPFile转换为httpPostedFile吗?

我们处理这个问题的方式是,当文件上传时,它被保存在一个众所周知的目录中,并使用基于GUID的临时文件名。然后,临时文件名和原始上传的文件名存储在类中的FileDetails列表中。我们的类然后被序列化到页面的ViewState,但它也可以存储在会话状态(我不建议这样做,如果你的用户打开多个页面或登录到多台计算机使用相同的登录)。

当保存按钮被按下时,我们循环遍历类中的FileDetails列表,从临时目录中检索每个文件,并将其发送到sharepoint(或任何需要的地方)。

我们还将上传的文件绑定到一个网格,这样用户就可以看到上传文件的列表,如果他们想删除一个文件,他们可以在网格中勾选我们在处理文件之前勾选的复选框(已删除)。

注意,这个过程还可以支持自动解压缩压缩文件:如果您检测到上传的文件被压缩,您可以将每个文件解压缩到临时目录,并为每个文件添加一个条目到类中的文件列表中。

将文档保存在内存中并不是有效使用web服务器内存的方法。最好将其存储在临时数据库或文件共享中…

但是,如果可以避免的话,我不建议你自己写这个。试着看看Telerik的RadUpload控件,他们甚至给你60天的试用期。

最新更新