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

时间:2011-12-05 10:23:31

标签: c# sharepoint

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

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

用户可以上传多个文件。

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

这是我的班级

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

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

2 个答案:

答案 0 :(得分:2)

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

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

我们还将上传的文件绑定到网格,以便用户可以看到上传文件的列表,如果他们想删除文件,他们可以在处理文件之前检查我们检查的网格(已删除)中的框

请注意,此过程还可以支持自动解压缩压缩文件:如果您检测到上传的文件已压缩,则可以将每个文件解压缩到临时目录,并为每个文件添加一个条目到类。这可以为您的用户节省大量时间。

答案 1 :(得分:1)

将文档保存在内存中并不能有效地使用webserver ram。 将它存储在临时数据库或文件共享中要好得多......

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