gpt4 book ai didi

file-upload - 在 Windows Azure 网站上传大文件时如何使用 BlockBlob

转载 作者:行者123 更新时间:2023-12-02 23:52:12 25 4
gpt4 key购买 nike

所有,我试图在网页中上传一个更大的文件(700MB),其中包含 Form 中的 File html 元素。我想在服务器端可以获取流并将其上传到Azure存储中。这是服务器端的一些代码片段。

public void UploadFile()
{
Stream source = Request.InputStream;

long copiedByteCount = 0;

byte[] buffer = new byte[2 * 1024];

for (int len; (len = from.Read(buffer, 0, buffer.Length)) > 0; )
{
//Begin to write buffer to Azure.
....(I am still searching the BlockBlob code sample in google.)
//
copiedByteCount += len;
}

}

我的问题是

1.I hope the app does not eat all the memory ,so read the stream by block. I don't know if it work as my wish.

2.Can someone help to give some example How to write all the buffer blocks into BlockBlob in parallel.

谢谢。

最佳答案

首先您必须知道,要允许 700MB 上传,您需要在 web.config 中允许此操作:

<system.web>
<httpRuntime executionTimeout="240" maxRequestLength="716800" />
</system.web>

<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="716800" />
</requestFiltering>
</security>
</system.webServer>

每当有人上传大于 256KB 的文件(这是默认值)时,该文件就会缓冲到磁盘(记录为 here )。所以您不必担心传入的文件。

要将此文件上传到 blob 而不将其加载到内存中,您只需使用 HttpPostedFile 的流并将其转发到存储客户端即可:

 var blob = container.GetBlockBlobReference(blobName);
blob.UploadFromStream(Request.Files[0].InputStream);

最后,如果您想并行上传 blob,您可以从此页面上的代码开始:Blob Parallel Upload and Download (您需要更改 UploadFileToBlobAsync 方法以接受流而不是文件名)。

关于file-upload - 在 Windows Azure 网站上传大文件时如何使用 BlockBlob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12550948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com