我正在开发.Net应用程序,我需要将多个mp3文件添加到zip压缩文件并在本地下载zip压缩文件。 mp3文件位于不同的网址上,广告没有托管或存储在我的服务器上。哪个图书馆适合这样的事情。我尝试使用SharpLipZip,但失败了。这是我目前正在尝试使用sharpziplib的代码。所有的代码被执行,但浏览器不下载。从asp.Net中以zip压缩文件的形式从不同的url下载多个Mp3文件
string[] fileURLs = new string[] { "http://www.musicimpressions.com/demos_mp3g/d_RE41843.mp3", "http://media.archambault.ca/sample/6/2/B/0/62B0CC2D91D4357D6477845E967AF9BA/00000000000000027923-256K_44S_2C_cbr1x_clipped.mp3" };
Response.AddHeader("Content-Disposition", "attachment; filename=CallRecordings.zip");
Response.ContentType = "application/x-zip-compressed";
ZipOutputStream zipStream = new ZipOutputStream(Response.OutputStream);
zipStream.SetLevel(3);
byte[] buffer = new byte[10485760];
foreach (string url in fileURLs)
{
Stream fileStream = null;
HttpWebRequest fileReq = (HttpWebRequest)HttpWebRequest.Create(url);
HttpWebResponse fileResp = (HttpWebResponse)fileReq.GetResponse();
if (fileReq.ContentLength > 0)
fileResp.ContentLength = fileReq.ContentLength;
//Get the Stream returned from the response
fileStream = fileResp.GetResponseStream();
byte[] fileBytes = ReadStream(fileStream);
ZipEntry fileEntry = new ZipEntry(ZipEntry.CleanName(url));
fileEntry.Size = fileBytes.Length;
zipStream.PutNextEntry(fileEntry);
zipStream.Write(fileBytes, 0, fileBytes.Length);
Response.Flush();
fileStream.Close();
}
zipStream.Finish();
zipStream.Flush();
zipStream.Close();
Response.Flush();
Response.End();
ReadStream的定义如下。
public static byte[] ReadStream(Stream input)
{
byte[] buffer = new byte[16 * 1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
return ms.ToArray();
}
}
.NET 4.5自带[ZipArchive类(http://msdn.microsoft.com/en-gb/library/system.io.compression.ziparchive.aspx) – Dave 2013-03-25 13:49:38
以及如何从网址添加mp3文件...任何帮助将不胜感激 – 2013-03-25 13:51:39
我建议你看一下FTP类。 MSDN上的那个为您提供了一个很好的开始,但请记住,MSDN示例目前仅用于文本文档,但将其更新为内存流(或文件流)并不困难! – Dave 2013-03-25 13:55:56