Erstellen Sie eine Datei unter verschachtelten Ordner in Sharepoint
Was ist der beste Weg, um erstellen Sie eine Datei unter einem verschachtelten Ordner in Sharepoint ?
Meine aktuelle Methode
public string CreateSPFile(string spServerURL, string spDocumentLibraryURL, string folder, string fileName, Stream fileStream, bool overwrite)
{
if (SPSite.Exists(new Uri(spServerURL)))
{
SPSite site = new SPSite(spServerURL);
SPWeb oWebsite = site.OpenWeb();
oWebsite.AllowUnsafeUpdates = true;
SPFolder spFolder = oWebsite.Folders[spDocumentLibraryURL];
if (!string.IsNullOrEmpty(folder))
{
spFolder.SubFolders[folder].Files.Add(fileName, fileStream, overwrite);
}
else
{
SPFileCollection files = spFolder.Files;
spFolder.Files.Add(fileName, fileStream, overwrite);
}
oWebsite.AllowUnsafeUpdates = false;
site.Close();
}
}
Wie Sie sehen können, wenn ich will erstellen Sie eine Datei unter verschachtelten Ordner, ich muss meine modifizierten codes.
, Was besseren Weg, um dieser Art von speichern im Unterordner situation?
Laut meiner Projekt-Struktur, können Sie die Datei wie /DocumentLibrary/Folder1/Folder2/Folder3/File.txt.
- Tipp: Wenn man eine if-else, beginnt mit "!", Sie sollten immer entfernen Sie die "!" (und natürlich tauschen Sie den Inhalt der if und else, für die Lesbarkeit 🙂
- Danke. Ja, es wird besser sein für andere.
- btw + 1 für den tip!!!!!!
- Ich werde nicht vorschlagen, diese als eine Allgemeine Regel. Das kommt wirklich auf den Kontext an.
- Ich lese es somewere aber jetzt kann ich es nicht finden. Ich sage nicht, dass ich im Recht bin, nur weil ich es gelesen aber. Wenn das "!" in der wenn somit nicht alles geben, neben schwerer Lesbarkeit, sollten Sie spiegeln die if-else-denke ich. Ist mir egal, was die Leute gehen mit, aber wenn jemand nie darüber nachgedacht, es könnte nützlich sein.
- Damit bin ich nicht einverstanden. Das heißt, ich Schreibe code, so dass die "positiven Fall" vorne ist (mit wenigen Ausnahmen). In diesem Fall die "positiven Fall" ist, wenn der string nicht mit null oder leer ist. (Es ist eigentlich eine Doppel-negativ ist.)
- Gutes argument, ich kann sehen, es funktioniert, wenn es consistens. Ich immer noch lieber als "einfache" Logik als möglich gedacht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Laden Sie einen Ordner von Ihrem server-relativen URL:
Mit diesem Ansatz werden Sie nicht haben, um Last-Ordner, indem Sie Ordner und Ihr code funktioniert mit n Ordner-Ebenen.
Habe ich aktualisiert code-Beispiel und einige Kommentare Hinzugefügt über SharePoint best practices:
// I suggest skip this pre check since it internally opens a new site object // If you have to silenlty ignore non-existant SPSite you should catch a FileNotFoundException.
? Ich weiß nicht viel über SharePoint. Wann werde ich wiederherstellen müssen von AllowUnsafeUpdates ? Nochmals vielen Dank.new SPSite(...)
Abfragen der Datenbank. Wenn Leistung für Sie relevant ist, möchten Sie vielleicht, den overhead zu vermeiden, dass kommt mitSPSite.Exists()
und einfach fangen Sie die Ausnahme. BezüglichAllowUnsafeUpdates
es ist gute Praxis, zu der Sie zurückkehren es für Objekte, die Sie haben keine Kontrolle über Sie nicht öffnen sich. E. g.:SPContext.Current.Web
Für das hochladen einer Datei in einen Unterordner, kann man den folgenden Ansatz:
EnsureFolder
unten, Wie ein verschachtelter Ordner existieren-SharePoint-SSOM
Kern: EnsureFolder.cs
Folgende Beispiel zeigt, wie Sie sicherstellen, dass die folgenden Ordner-Struktur vorhanden sind, unter
Documents
Bibliothek und eine Datei hochladen in es:Beispiel: