在这里,我尝试使用dotnetzip压缩目录的内容,我收到错误消息:不支持URI格式。 <登记/> 这是我用来执行此操作的代码。
string strDirectoryName="http://zyx.blob.core.windows.net/myfiles/mymusic"
using (ZipFile zip = new ZipFile())
{
zip.AddDirectory(strDirectoryName);
zip.Comment = "This zip was created at " + System.DateTime.Now.ToString("G");
zip.Save("zipFileToCreate");
}
我查看了类似问题here的答案。我也遵循相同的网址格式,然后我收到此错误。请帮我解决此错误
我修改了上面的代码如下,并且zip文件正在创建但已损坏。 在我的blob容器'myfiles'中,我想通过读取myMusic文件夹中的所有文件和文件夹来创建名为“mymusic.zip”的zip文件,同时在zip文件中保留相同的文件夹结构。以下代码创建zip文件,但是zip文件已经损坏了。有什么建议可以解决这个问题吗?
string ofurl = @"http://myxyzstorage.blob.core.windows.net/myfiles/mymusic";
string ofBlob = @"http://myxyz.blob.core.windows.net/myfiles";
dBlob = new CloudBlob(blobClient.GetBlobReference(ofBlob));
using (var zipFile = new ZipFile())
{
byte[] fileBytes = dBlob.DownloadByteArray();
using (var fileStream = new MemoryStream(fileBytes))
{
fileStream.Seek(0, SeekOrigin.Begin);
zipFile.AddEntry(ofurl+".zip", fileBytes);
}
var sas = offlineContainer.GetSharedAccessSignature(new SharedAccessPolicy()
{
Permissions = SharedAccessPermissions.Write,
// SharedAccessExpiryTime = DateTime.UtcNow.AddSeconds(this.timeOutSeconds)
});
using (var zipStream = new MemoryStream())
{
zipFile.Save(zipStream);
zipStream.Seek(0, SeekOrigin.Begin);
var blobRef = ofContainer.GetBlobReference(ofurl);
blobRef.UploadFromStream(zipStream);
}
}
这里有我上面的代码,为什么我的zip文件被破坏了?
答案 0 :(得分:1)
This site看起来既解决了问题又解决了问题。
Cheeso - DotNetZip can read from filesystems. It cannot read from http sources. An easy way to do what you want is to send a GET request to the HTTP resource, and then pass the ResponseStream to the call to AddFile().
然后他继续编写一个示例解决方案
答案 1 :(得分:0)
我不熟悉dotnetzip,但我想我知道你的问题。
访问服务器的项目时,请使用服务器路径,而不是URI(Web地址)。操作系统不知道http://your.website
实际上是其c:\\web\website\somedirectory