Hochladen von Dateien in Sharepoint (WSS 3.0) Dokument Bibliothek mithilfe von HTTP PUT
Hallo ich habe den folgenden code, um eine Datei hochladen zu Sharepoint. Es nutzt die HTTP PUT:
public static string UploadFile(string destUrl, string sourcePath)
{
try
{
Uri destUri = new Uri(destUrl);
FileStream inStream = File.OpenRead(sourcePath);
WebRequest req = WebRequest.Create(destUri);
req.Method = "PUT";
req.Headers.Add("Overwrite", "F");
req.Timeout = System.Threading.Timeout.Infinite;
req.Credentials = CredentialCache.DefaultCredentials;
Stream outStream = req.GetRequestStream();
string status = CopyStream(inStream, outStream);
if (status == "success")
{
outStream.Close();
WebResponse ores = req.GetResponse();
return "success";
}
else
{
return status;
}
}
catch (WebException we)
{
return we.Message;
}
catch (System.Exception ee)
{
return ee.Message;
}
}
Wenn ich diesen code ausführen, bekomme ich die exception:
"Der Remoteserver hat einen Fehler zurückgegeben: (409) Konflikt."
Hat jemand irgendwelche Ideen, wo ich bin mache ich falsch?
Dank,
Alex
- Ich habe gerade vor der selben Frage - überprüfen, dass die URLs sind gültig!
- C# - noob fragt: Wo kommt CopyStream kommen?
- Es ist ein Ableger des CopyRiver
- Wo kommt die
CopyStream
Methode her?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe dieses Problem bei dem ich war, verweisen auf die url der Dokumentbibliothek und nicht die Ziel-Datei selbst.
also versuchen http://server name/document name der Bibliothek/neue Datei name.doc
Keine Ahnung. Aber warum nicht Sie die Verwendung von Remote Procedure Calls (RPC) das ist, wie ich das üblicherweise Tue.
Fand ich dieses Beispiel, das könnte den Einstieg http://geek.hubkey.com/2007/11/upload-file-to-sharepoint-document.html
Versuchen:
Habe ich noch nicht gelöst ist mein problem noch, das ist, warum ich hier bin, aber ich weiß, warum Sie diese Fehlermeldung bekommen.
Dem Fehler führt, weil Sie nicht die Einstellung einer versteckten, aber erforderlich, Feld. In meinem Fall hatte ich keine Spalten, und sicherlich keine, die erforderlich waren. Allerdings gibt es eine Versionierung Feld, das in Konflikt ist.
Meine Absicht ist es, 1) laden Sie das Dokument, und 2) der Dokument-Metadaten. 1) und 2) erfolgt über separate HTTP-Aufrufe. Im Idealfall möchte ich dies in einem einzigen Aufruf, aber ich weiß nicht, wie dies zu tun.
Um dies zu erreichen, 1) erfolgreich, so das Dokument wird in der Bibliothek angezeigt. Dann, wenn ich versuche zu aktualisieren Sie die Metadaten, die, wenn ich die 409 Fehler.
Ich bin mir ziemlich sicher, dass ich zum ersten mal stecken müssen, ein Schritt zwischen 1) und 2) die ersten downloads der Dokument-Liste (oder manifestieren), die in der Theorie enthalten die benötigten Versionsinformationen. Alles ich würde tun müssen ist, legen Sie die Metadaten-Felder, die ich brauche, und schicken Sie zurück an den server.
Nein, wir wollen nicht die Verwendung der Sharepoint-API, weil es keine Bibliotheken, für die es in Java. 😉
Gibt es einen besonderes Grund kann man nicht einfach die Verwendung der Sharepoint-API (zB. SPFolder.- Dateien.Hinzufügen), um die Datei hochzuladen? Wie folgt:
http://msdn.microsoft.com/en-us/library/ms454491.aspx
Alex,
Dies geschah zu mir. Sie wahrscheinlich sollte erstellen Sie ein weiteres Leuchten oder Dokument-Bibliothek und Dateien hochladen, um zu testen.
Möchten Sie vielleicht zu prüfen, die variable "destUri" um zu sehen, ob es Punkte auf genau die erwartet, dass die sharepoint-Liste.
Meine situation ist ich mich zunächst erstellt ein Dokument Bibliothek "Requrements", es ist ein Tippfehler Fehler, dann habe ich den Titel geändert zu "Anforderungen". Sie sollten beachten, dass sharepoint immer noch die URL zu dieser Liste als http://server:port/Requrements
Dies ist eine Ausnahme. Hoffentlich hilft es.