【问题标题】:SilverLight multi file uploader + Azure Blob storage : occasional corrupt uploads in IESilverLight 多文件上传器 + Azure Blob 存储:IE 中偶尔会出现损坏的上传
【发布时间】:2013-09-24 02:01:22
【问题描述】:

我正在使用 Silverlight multi file uploader 并将 Azure Blob 中的文档作为字节数组上传。

//Append the memory stream into ByteArray
using (MemoryStream ms = new MemoryStream())
{
     stream.CopyTo(ms);
     return ms.ToArray();
 }

// Upload the file
blob.UploadByteArray(bytes);

上传文档似乎间歇性损坏。

有什么建议吗?

【问题讨论】:

  • 发生网络故障。您应该在双方都运行内容哈希,如果它们不匹配,请让用户知道并提供再次下载的选项。
  • @Steve 我们如何在 Silverlight 多文件上传器的 javascripts 端实现内容哈希

标签: silverlight file-upload azure blob azure-storage


【解决方案1】:

Windows Azure 存储客户端库通过在将数据发送到 Windows Azure 存储服务(在大多数情况下)时验证数据的 MD5 哈希来保护正在上传的 blob 的完整性。如果您使用 HTTPS 连接到服务,这也将验证数据是否正确发送。

如何使用MD5哈希的详细信息:http://blogs.msdn.com/b/windowsazurestorage/archive/2011/02/18/windows-azure-blob-md5-overview.aspx

我相信您看到的损坏发生在客户端的网络浏览器和您的应用程序之间。您需要让用户再次尝试上传。

顺便说一句,您的代码不必要地创建了两个额外的数据副本(MemoryStream 和字节数组)。相反,试试这个:

blob.UploadFromStream(stream);

【讨论】:

  • 已实现的解决方案: 1. 检查用户和网络服务器之间的 pdf 损坏:使用 iTextsharp 读取上传的 pdf。 2. 检查网络服务器和 Azure Blob 存储之间的 pdf 损坏:在网络服务器和上传到 azure 的 pdf 之间进行 MD5CheckSum 结果:文件上传到网络服务器时损坏。问题出在用户和网络服务器之间。任何建议
  • @Padmalochan 我认为最好的办法是向用户显示错误消息并要求他们再次尝试上传。这假设您可以检测到上传失败。可能有一种直接的方法可以知道这一点。否则,读取文件似乎是一个很好的解决方案。另外,这可以捕获用户尝试上传的错误文件。
  • 这种情况会间歇性发生,用户可以在重试几次后上传相同的文档(好文件)。我们想知道文档损坏的确切原因,是不是上传者在发送文档时丢失了一个块。
  • 你能重现这个问题吗?如果是这样,您可以使用 Fiddler 或 Wireshark 等网络监控工具找到此问题的答案。这些允许您查看通过网络发送的原始数据。
猜你喜欢
  • 2018-07-12
  • 1970-01-01
  • 1970-01-01
  • 2014-08-08
  • 2015-06-16
  • 2020-01-14
  • 2011-10-12
  • 2020-01-09
  • 2021-06-10
相关资源
最近更新 更多