Upload Zip file and unpack on the fly to Windows Azure Blob
Upload Zip file and unpack on the fly to Windows Azure Blob
为求方便(懒惰的做法XD),我直接借用小朱在 边做边学 Windows Azure 应用程序开发基础 Part 2:开发 BLOB、Table 与 Queue 应用程序 一文中的例子来改写。
如图中红色框框:其中最大的不同是使用 DotNetZip 这个组件以数据的方式流来进行解压缩 (on the fly),这方法有个好处,在解压缩时可以越过 Windows 的文件系统,不会产生实例文件在硬盘上暂存。
将上载的文件,利用 FileUpload.PostedFile.InputStream 这个属性转换为数据流,再由 DotNetZip 读取。这时,输出的每一个 ZipEntry 当然也是数据流。程序中,数据流的操作与实例文件无异;差别在于保存到 Blob 时,调用的方法不同。
另外,例子中,blob.UploadByteArray(ms.ToArray())、blob.UploadFromStream(ms) 二者皆可以达成目的,择一即可。
这个范例程序在实际执行时,可能会遭遇到的一个问题 System.Web.HttpException 超出最大的要求长度。试问,该如何调整?
这是因为上载文件太大,超过 4096KB 默认上限值所导致。
根据 MSDN 的说明:MaxRequestLength 属性可用于防止因使用者张贴大型文件至服务器所造成的服务拒绝攻击。要解除这个限制,可在 Web.config 段落中,覆写 maxRequestLength 的值,
???
如上设定,则 ASP.Net 允许上载 10MB 的文件。
完整范例档 BlobExample.aspx.cs.zip
Ref:
1. 边做边学 Windows Azure 应用程序开发基础 Part 2
2. DotNetZip with Streams
3. HttpRuntimeSection.MaxRequestLength 属性
===
补充:
设定本机测试的 Storage Service 时 ( dsinit /sqlinstance:. ),可能遇到 “provider: 具名的管线提供者,error: 40 - 无法开启至 SQL Server 的连接” 的错误。此时,请检查通讯协定中的 TCP/IP 是否有被启动。接着,调整 TCP 通讯协定的 Port 值。
或是直接参考 这里 有详细的图文教学。
或是 这篇 也可。
原文:大专栏 上传 Zip 压缩档并即时解压缩文件保存到 Blob
原文地址:https://www.cnblogs.com/chinatrump/p/11458353.html