在azure blob中上传文件时出现异常

时间:2014-02-25 10:02:15

标签: azure azure-web-roles

我写了下面的代码来在windows azure中上传文件。 用户需要在本地驱动器上输入视频文件的路径,如D:\ video \ 1.mp4和视频名称。我推送队列中的两个信息。点击上传按钮,它将读取队列并获取路径并上传视频内容。当我在azure webrole上传相同的代码时,下面的代码在本地机器上工作正常无法读取路径

string [] x = retrieveMessage.AsString.Split(',');             queue.DeleteMessage(retrievedMessage);

            using (var fileStream = System.IO.File.OpenRead(x[1]))
            {
                blockBlob.UploadFromStream(fileStream);
            }

1 个答案:

答案 0 :(得分:0)

我猜你的系统中有一个Web角色和一个工作角色(至少)。用户选择他/她的文件并在网站中提供名称,然后您的Web角色生成一条消息并推入队列。然后,您的工作人员检索该消息并尝试读取该文件并在后台保存为blob。

如果我的假设是正确的,那么您应该遇到您提到的错误,因为辅助角色无法从消息{ "path": "D:\1.mp4", "name": "1.mp4" }读取用户的本地文件。

一种解决方案是直接将文件从您的网络角色上传到blob。但如果文件非常大,这可能会导致问题。

或者,您可以使用JavaScript和HTML5在浏览器的后台并行上传文件(用户不得刷新或离开您的页面)。基本上,您可以生成blob容器的SAS并渲染到页面中,然后通过JavaScript以块的形式读取文件并将它们直接上传到blob。最后发送请求将这些块组合成blob。

以下是我的一篇博文可能有帮助http://blog.shaunxu.me/archive/2013/07/01/upload-file-to-windows-azure-blob-in-chunks-through-asp.net.aspx