Je n'arrive pas à faire fonctionner le logiciel pour télécharger un fichier Excel créé par closedxml via l'API web. Si je sauvegarde le fichier sur le serveur, il semble bon, mais dès que je le mets dans un flux et le renvoie à l'API Web, seul un fichier corrompu est reçu dans le navigateur.Téléchargement de fichier Excel à partir d'une API Web à l'aide de closedxml
Comme suggéré sur plusieurs articles j'utilise httpResponseMessage, mais aussi dans le navigateur le nom de fichier dans l'en-tête n'arrive jamais.
Nous utilisons:
"Microsoft.AspNet.WebApi" version = "5.2.3" "version = "targetFramework =" net461
" de ClosedXML 0.88.0" targetFramework = "net461"
code WebAPI:
var wb = new XLWorkbook();
var ws = wb.Worksheets.Add("Parcel List");
MemoryStream fs = new MemoryStream();
wb.SaveAs(fs);
fs.Position = 0;
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new ByteArrayContent(fs.GetBuffer());
result.Content.Headers.ContentLength = fs.Length;
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "List" + "_" + DateTime.Now.ToShortDateString() + ".xlsx"
};
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
return result;
Voici le code javascript:
context.$http.post(config.get_API_URL() + 'api_call', excel_list,
{responseType: 'application/octet-stream'})
.then(
success_function,
error_function)
}
success_function:
function(response) {
var headers = response.headers;
var blob = new Blob([response.body],
{type:'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'},
);
window.open(window.URL.createObjectURL(blob));
}
Si vous enregistrez le fichier, renommez-le en .zip, pouvez-vous l'ouvrir? J'essaie de déterminer si les internes sont corrompus ou si l'emballage est corrompu dans le transfert. –
J'ai enregistré le classeur sur le serveur et l'ai renommé en .zip, il est possible de l'ouvrir et de voir la structure. Donc, il semble être le transfert qui le corrompt – TwoHeadedSquirrel
Si vous pouvez ouvrir le fichier .zip, ce n'est pas le transfert qui l'a corrompu. Pouvez-vous vérifier la longueur du contenu par rapport à la longueur exacte du fichier lorsque vous l'enregistrez sur le serveur? –