J'ai un tas de modèles de formulaires InfoPath (xsn) que je veux télécharger dans une liste SharePoint par programmation. Mon programme doit télécharger ces modèles de formulaires dans différentes listes en fonction d'une logique prédéfinie. Lorsque je télécharger les modèles de formulaire compatibles avec les navigateurs (XSN) avec mon code, les formulaires ne fonctionnent pas:Téléverser par programmation XSN vers SharePoint
/// <summary>
/// Uploads a file to the specified sharepoint list
/// </summary>
/// <param name="listName"></param>
/// <param name="fileInfo"></param>
/// <param name="listVersion"></param>
/// <returns></returns>
public static bool UploadFile(string listName, FileInfo fileInfo, string listVersion)
{
WebRequest request = WebRequest.Create(fileInfo.URL);
request.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
request.Method = "PUT";
byte[] buffer = new byte[1024];
using (Stream stream = request.GetRequestStream())
{
using (MemoryStream ms = new MemoryStream(fileInfo.Bytes))
{
for (int i = ms.Read(buffer, 0, buffer.Length); i > 0; i = ms.Read(buffer, 0, buffer.Length))
stream.Write(buffer, 0, i);
}
}
WebResponse response = request.GetResponse();
response.Close();
var client = new Lists.ListsSoapClient();
var batch = new XElement("Batch",
new XAttribute("OnError", "Continue"),
new XAttribute("ListVersion", listVersion),
new XAttribute("PreCalc", "TRUE"));
var method = new XElement("Method",
new XAttribute("ID", "1"),
new XAttribute("Cmd", "Update"),
new XElement("Field",
new XAttribute("Name", "ID")),
new XElement("Field",
new XAttribute("Name", "FileRef"),
fileInfo.URL));
foreach (string key in fileInfo.Properties.Keys)
{
object value = fileInfo.Properties[key];
method.Add(new XElement("Field",
new XAttribute("Name", key),
fileInfo.Properties[key]));
}
batch.Add(method);
var element = client.UpdateListItems(listName, batch);
var code = element.Elements().First().Elements().First().Value;
if (code != "0x00000000")
throw new Exception(code);
return true;
}
Il semble qu'il y ait plus à faire que simplement pousser un flux de fichier dans la liste.
Est-ce que quelqu'un a une idée pour faire cela?
EDIT Plus précisément, le message d'erreur que je reçois est: This form template is not enabled for viewing in the browser.
MISE À JOUR Lorsque je publie la même forme avec Microsoft InfoPath cela fonctionne.
Un message d'erreur le formulaire pourrait être utile. –
Merci .... mis à jour. –
Votre formulaire est-il réellement activé pour l'affichage du navigateur? –