J'ai étudié les réponses à des questions similaires, mais je n'en ai vu aucune où plusieurs fichiers sont rassemblés dans un fichier zip pour la transmission au téléchargement. Ce qui suit ne donne aucune erreur mais ne retourne pas un fichier zip reconnaissable.Ziparchive pour plusieurs fichiers dans le flux de la mémoire
public async Task<HttpResponseMessage> SendAZipOfFiles()
{
var memoryStream = new MemoryStream();
var response = new HttpResponseMessage(HttpStatusCode.OK);
List<string> filepaths = await GetSomeFiles();
using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
{
foreach (string filepath in filepaths)
{
string filename = Path.GetFileName(filepath);
using (StreamReader reader = new StreamReader(filepath))
using (StreamWriter writer = new StreamWriter(archive.CreateEntry(filename).Open()))
{
writer.Write(reader.ReadToEnd());
}
}
}
memoryStream.Position = 0;
response.Content = new StreamContent(memoryStream);
response.Content.Headers.ContentLength = memoryStream.Length;
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "TheFile.zip")
};
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/zip");
return response;
}
Side note, mais quand vous cassez la partie passer comme un éclair comme une méthode distincte, il devient beaucoup plus facile à (Test de l'unité. –