Вы можете использовать display: flex
для родительского элемента
#parentElement {
display: flex;
flex-direction: column;
align-items: flex-start;
}
. Если вы можете использовать Mono, DotNetZip сделает это.
Response.Clear();
Response.BufferOutput= false; // necessary for chunked output
String ReadmeText= "This content goes into an entry in the " +
"zip file. Timestamp, MD5, whatever." ;
string archiveName= String.Format("archive-{0}.zip", DateTime.Now.ToString("yyyy-MMM-dd-HHmmss"));
Response.ContentType = "application/zip";
Response.AddHeader("content-disposition", "filename=" + archiveName);
using (ZipFile zip = new ZipFile())
{
zip.AddEntry("Readme.txt", "", ReadmeText, Encoding.Default);
zip.AddFiles(filesToInclude, "files");
zip.Save(Response.OutputStream);
}
HttpContext.Current.ApplicationInstance.CompleteRequest();
DotNetZip с открытым исходным кодом, бесплатное использование.
Java также поддерживает потоковые zip-архивы. взгляните на пакет java.utils.zip. Я использовал это для реализации конвейера, состоящего из модулей FTP, UNZIP, XSLT, CSV. это действует как чары.
Мартин