Lors de l'utilisation de la bibliothèque DocX, je génère le document docx sur le serveur, puis le télécharge..Net C# DocX librairy: comment sérialiser un document DocX?
Pour cela, j'ai besoin de convertir mon document en un tableau d'octets.
Pour ce faire, je gardais previousloy le document comme un fichier physique comme celui-ci:
// Save all changes to this document.
document.SaveAs(GENERATED_DOCX_LOCATION);
return System.IO.File.ReadAllBytes(GENERATED_DOCX_LOCATION);
mais je préférerais ne pas le faire. Est-il possible de sérialiser cet objet pour le télécharger sans l'enregistrer physiquement?
Je l'ai déjà essayé:
private byte[] ObjectToByteArray(object obj)
{
if (obj == null)
return null;
BinaryFormatter bf = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream())
{
bf.Serialize(ms, obj);
return ms.ToArray();
}
}
Avec:
return this.ObjectToByteArray(document);
Mais évidemment, DOCX ne met pas en œuvre ISerializable.
EDIT: le code ci-dessous ne fonctionne pas non plus
byte[] byteArray = null;
using (var stream = new MemoryStream())
{
document.SaveAs(stream);
byteArray = stream.ToArray();
}
return byteArray;
est-ce un serveur Web et interne à votre organisation? –
oui c'est un serveur privé, géré par une équipe dédiée –
Jetez un coup d'oeil à cela alors et cela devrait vous donner ce dont vous avez besoin (sauf si vous utilisez MVC, qui sera une réponse différente, mais je peux en coder un plus tard si vous besoin) mais ... cela devrait fonctionner https://stackoverflow.com/questions/18477398/asp-net-file-download-from-server –