在Windows Azure Webrole上使用SWFUploader上载大文件(最大2GB)

时间:2011-01-06 06:46:18

标签: azure azure-storage-blobs

我有一个应用程序,因为我想上传最大2GB的大文件,处理完这个文件之后我想把它作为blob存储在blobstorage上。我正在使用SWFUploader上传文件(我想显示进度条,这是必须的)。

问题是,我无法上传超过100 MB的文件。上传最大100 MB(或有时90-95 MB)的文件后,它会重新启动整个上传过程,有时会失败。我正在使用Webrole项目完成这项任务。

所以我的问题是:我可以在windows azure webrole项目(基本上是它的Asp.net网站,我想在网络服务器上传文件)上传这么大的文件并在那里处理它然后上传到blobstorage吗? / p>

据我所知,我做了以下事情:

1:我在web.config中设置了以下参数

<security>
<requestFiltering>
 <!--maxAllowedContentLength in bytes-->
        <requestLimits maxAllowedContentLength="2147483648"></requestLimits>
</requestFiltering>
</security>

<httpRuntime executionTimeout="999999" maxRequestLength="2097152"/>

2:我已将ASP.Net的默认TMP / TEMP文件夹(默认为100 MB)更改为我在本地存储中创建的新文件夹,使用以下代码片段

我已将此“CustomTempLocalStore”创建为

<LocalStorage name="CustomTempLocalStore" cleanOnRoleRecycle="false" sizeInMB="1024" />

然后通过在webrole的onstart()menthod中设置以下代码,将此本地存储资源设置为用作TMP / TEMP。

string customTempLocalResourcePath = RoleEnvironment.GetLocalResource("CustomTempLocalStore").RootPath;
Environment.SetEnvironmentVariable("TMP", customTempLocalResourcePath);
Environment.SetEnvironmentVariable("TEMP", customTempLocalResourcePath);

我在以下链接中找到了这个: http://msdn.microsoft.com/en-us/library/dd573354.aspx

仍然没有用,SWFUploader正在给出以下错误:

服务器(IO)错误

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

默认情况下,Windows Azure上的本地存储限制为100MB。至少它是在blog post时,它详细解释了如何解决它。

答案 1 :(得分:0)

您可以使用Azure Blobs共享签名来允许客户端直接在blob上写入:

http://convective.wordpress.com/2010/01/20/access-control-for-azure-blobs/

干杯。

答案 2 :(得分:0)

这是一个MSDN article解释100 MB TEMP文件夹限制,并提供一个简单的解决方法,涉及重定向TEMP目录(与Dave的答案不同)。