基于多个上传文件SP2010创建多个共享点列表项

时间:2012-01-31 20:26:39

标签: sharepoint-2010

我想根据本地驱动器中选定的多个文件创建共享点列表项。上传选定的多个文件后,列表应包含带附件的新列表项(标题为文件名)(一个附件/上传文件)。

1 个答案:

答案 0 :(得分:0)

好的,我使用http://www.plupload.com/在该列表中扩展了我的自定义webpart(带有dynatree),并创建了用于保存附件的页面。

public partial class ImportMultipleFilesAsListItems : LayoutsPageBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
//request form parameters comes from plupload
            int parentFolderKey = int.Parse(Request.Form["key"]);
            var file = Request.Files[0];

            SPList list = SPContext.Current.Web.GetList(Request.Form["listUrl"]);

            SPListItem folderItem = list.GetItemById(parentFolderKey);

            if (folderItem != null) 
            {
                string parentFolder = null;

                if (folderItem.Folder != null)
                {
                    parentFolder = folderItem.Folder.Url;
                }
                else
                {
                    int slashIndx = folderItem.Url.LastIndexOf('/');
                    parentFolder = folderItem.Url.Substring(0, slashIndx);
                }


                SPListItem childFile = list.AddItem(parentFolder, SPFileSystemObjectType.File);
                childFile["Title"] = file.FileName;
                childFile["IsFolder"] = 0;
                childFile["DocParentId"] = parentFolderKey;
                childFile.UpdateOverwriteVersion();

                byte[] data = new byte[file.ContentLength];

                file.InputStream.Read(data, 0, file.ContentLength);

                childFile.Attachments.AddNow(file.FileName, data);
            }

        }
    }

$(function () {
    var listInfo = new Object();
    listInfo.key = null;
    listInfo.listUrl = ctx.listUrlDir;
    listInfo.__REQUESTDIGEST = $('#__REQUESTDIGEST').val();

    $("#uploader").pluploadQueue({
        // General settings
        runtimes: 'browserplus,html5,html4',
        url: $('#uploadMultipleFilesUrl').val(),
        max_file_size: '50mb',
        chunk_size: '1mb',
        multipart_params: listInfo,
        rename: true
    });
    // Client side form validation
    $('form').submit(function (e) {
        var uploader = $('#uploader').pluploadQueue();

        // Files in queue upload them first
        if (uploader.files.length > 0) {
            // When all files are uploaded submit form
            uploader.bind('StateChanged', function () {
                if (uploader.files.length === (uploader.total.uploaded + uploader.total.failed)) {
                    $('form')[0].submit();
                }
            });

            uploader.start();
        } else {
            alert('You must queue at least one file.');
        }

        return false;
    });

    $("#uploader").hide();
});