Domanda

i am getting this exception of "Thread was being aborted " on library.Update();

my code snippet :

                      var fileName = Path.GetFileName(file.FileName);
            var byteArray = ReadFully(file.InputStream);
            if (byteArray != null)
            {
                var site = SPContext.Current.Site;
                using (var web = site.RootWeb)
                {
                    var imagesFolderUrl = web.Url + "/" + library.RootFolder.Url + "/" + folderName;
                    if (!web.GetFolder(imagesFolderUrl).Exists)
                    {
                        web.AllowUnsafeUpdates = true;
                        var folderItem = library.AddItem(library.RootFolder.ServerRelativeUrl,
                            SPFileSystemObjectType.Folder, folderName);
                        folderItem.Update();
                        library.RootFolder.Update();
                        library.Update();
                        web.AllowUnsafeUpdates = false;
                    }
                    var subFolderUrl = web.Url + "/" + library.RootFolder.Url + "/" + folderName;
                    SPFile imagefile = web.GetFile(subFolderUrl + "/" + file.FileName);
                    if (imagefile.Exists && !isOverwrite)
                    {
                        filePath = "Overwrite: An image by the name " + fileName +
                                   " already exists, would you like to overwrite it?";
                    }
                    else
                    {
                        web.AllowUnsafeUpdates = true;
                        SPFolder folder = web.GetFolder(subFolderUrl);
                        var spFile = folder.Files.Add(fileName, byteArray, true);
                        filePath = web.Url + "/" + spFile.Url;
                        folder.Update();
                        library.Update();
                        web.AllowUnsafeUpdates = false;
                    }

                }
            }

Can any body get me out of this?

È stato utile?

Soluzione

The folder is fetched from its URL so instead of updating the library which contains that folder directly update that folder only

web.AllowUnsafeUpdates = true;
SPFolder folder = web.GetFolder(subFolderUrl);
var spFile = folder.Files.Add(fileName, byteArray, true);
filePath = web.Url + "/" + spFile.Url;
folder.Update();
web.AllowUnsafeUpdates = false;

Updated:

You are trying to create one folder in the document library at root level. After creating a folder, adding a file into that folder.

Below code snippet creates a folder and then create a file into that folder.

        SPWeb web = SPContext.Current.Web;
        SPDocumentLibrary library = web.Lists.TryGetList("Documents") as SPDocumentLibrary;

        web.AllowUnsafeUpdates = true;

        if (!web.GetFolder(library.RootFolder.ServerRelativeUrl + "/Test").Exists)
        {
            SPFolder folder = library.RootFolder.SubFolders.Add("Test");

            byte[] bytes = System.Text.Encoding.Unicode.GetBytes("Hello World.");

            if (!web.GetFile(folder.ServerRelativeUrl + "/FileTest.txt").Exists)
            {
                var spFile = folder.Files.Add("FileTest.txt", bytes, true);                
            }
        }
        web.AllowUnsafeUpdates = false;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top