上传 Zip 压缩档并即时解压缩文件保存到 Blob

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

时间: 2024-09-29 16:41:45

上传 Zip 压缩档并即时解压缩文件保存到 Blob的相关文章

艾恩ASP无组件上传类(上传组件)说明文档(from www.sysoft.cc)

艾恩ASP无组件上传类(上传组件)说明文档2010-1-18 By Anlige一.简介自从接触ASP就开始接触上传,看过一些上传类,但是总感觉封装的还是不够简单,因此自己尝试写一个能够用最少最简单的代码实现各种上传方式的上传类.在学校期间就开始写,一点点的完善.优化,到现在的版本,现在的版本能适应各种上传方式.上传类的主要的功能如下:1.自由设置最大上传大小.单文件最大上传大小2.自由设置允许上传的文件类型3.可设置文本的编码,以适应各种上传环境4.内置进度条,a用户可选择开启和关闭5.多种错

spring mvc 图片上传,图片压缩、跨域解决、 按天生成目录 ,删除,限制为图片代码等相关配置

spring mvc 图片上传,跨域解决 按天生成目录 ,删除,限制为图片代码,等相关配置 fs.root=data/ #fs.root=/home/dev/fs/ #fs.root=D:/fs/ #fs.domains=182=http://172.16.100.182:18080,localhost=http://localhost:8080 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE be

Struts2文件上传(基于表单的文件上传)

•Commons-FileUpload组件 –Commons是Apache开放源代码组织的一个Java子项目,其中的FileUpload是用来处理HTTP文件上传的子项目 •Commons-FileUpload组件特点 –使用简单:可以方便地嵌入到JSP文件中,编写少量代码即可完成文件的上传功能 –能够全程控制上传内容 –能够对上传文件的大小.类型进行控制 •需要下载Common-FileUplaod框架地址(当然MyEclipce中Struts2支持里自带有这两个包): –http://jak

上传Text文档并转换为PDF(解决乱码)

前些日子,Insus.NET有分享一篇<上传Text文档并转换为PDF>http://www.cnblogs.com/insus/p/4313092.html 它是按最简单与默认方式来处理. 它在处理带有中文的文本文件时,转换为PDF时,中文不能正常显示,乱码. 本篇算得上是在那基础上,进行重构,解决乱码问题. 为了解决字符问题,我们需要在专案下创建一个目录,如Fonts是用来存储字体.我们去windows目录下把SIMSUN.TTC字体拷贝过来. 在控制器的PostFile()操作中,也得需

使用Python boto3上传Windows EC2实例中的文件至S3存储桶中

一.创建终端节点 为什么要创建终端节点,把VPC和S3管理起来呢?如果不将VPC和S3通过终端节点管理起来,那么VPC中EC2实例访问S3存储桶是通过公共网络的:一旦关联起来,那么VPC中EC2实例访问S3存储桶走的就是内部网络.好处有两个:1. 走内部网络就不会产生流量费用:2. 走内部网络速度快,不会因为网络原因导致我们的Python脚本产生异常. VPC->终端节点->创建终端节点->将VPC和S3关联->关联子网 二.在Windows中安装Python3编译器以及boto3

如何清空文件上传控件里的选定文件(路径)

我又来扯鸡毛蒜皮了.有名言曰人生短得不够扯鸡毛蒜皮,但我的工作就是由无数的鸡毛蒜皮组成,如之奈何? 今天的鸡毛和蒜皮是:如何清空文件上传控件里的选定文件(路径)? 场景是酱紫的: 有一个上传控件和一个按钮,其中上传控件隐藏.点击按钮,触发上传控件点击事件,于是弹出文件选择对话框:选好文件后,于是触发了上传控件的onchange事件.在这个事件里,将文件上传. 有点装逼,就是隐藏了上传控件.这可能是出于界面简约的考虑.问题是,同一个文件不能连续上传2次,因为路径不变,没有触发onchange事件.

富头像上传编辑器文档(from www.sysoft.cc)

调用方法 new fullAvatarEditor(swfContainerID, [height], [width], flashvars, [callback]); 返回值:object,该对象可调用call方法,请参见 call方法. swfContainerID 用以包裹Flash的HTML元素的ID. height Flash的高度,默认为 600. width Flash的宽度,默认为 630. flashvars 配置参数 名称 类型 默认值 描述 id String fullAv

springmvc和servlet下的文件上传和下载(存文件目录和存数据库Blob两种方式)

项目中涉及了文件的上传和下载,以前在struts2下做过,今天又用springmvc做了一遍,发现springmvc封装的特别好,基本不用几行代码就完成了,下面把代码贴出来: FileUpAndDown.jsp <%@ page language="java" contentType="text/html; charset=UTF-8"%> <html> <head> <title>using commons Uplo

asp.net 上传XML,txt 直接读取文件内容

if (GetUploadFileContent.PostedFile.InputStream.Length < 1) { Msg.Text = "请选择文件";return; } string FileName = GetUploadFileContent.FileName;//上传文件文件名 string FilePath = GetUploadFileContent.PostedFile.FileName;//上传文件完整路径+文件名string fileExtName =