我的超简单方法有个奇怪的问题。它向外部API发送4MB块的文件。问题是,总是在第10块,外国API崩溃。
调试API错误是不可能的,但它说:The specified blob or block content is invalid (那个API是Azure,但它现在并不重要,问题显然在我这一边)。
因为它在第10个元素(40兆字节)崩溃,所以测试它和“手工”调试它很痛苦(部分原因是我的互联网连接速度不好),所以我决定分享我的方法。
def upload_chunk()
file_to_send = File.open('file.mp4', 'rb')
until file_to_send.eof?
@content = file_to_send.read 4194304 # Get 4MB chunk
upload_to_api(@content) # Line that produces the error
end
end你能看到任何东西吗,这可能是错误的代码?请记住,它总是在第10次崩溃,并完美地工作大小小于40 MB的文件。
发布于 2014-03-13 19:29:57
我搜索了ruby "The specified blob or block content is invalid",发现这是第二个链接(第一个是这个页面):
http://cloud.dzone.com/articles/azure-blob-storage-specified
其中包括:
如果您通过将blobs分割成块来上传blobs,并且得到上述错误,将确保您的块If的长度相同。如果您的块的块If是不同的长度,则会出现此错误。
因此,我的第一个猜测是,对upload_to_api的调用是从1-9分配id,然后当它到达10时,id长度就会增加,从而导致问题。
如果您无法控制If的生成方式,那么也许可以将每次迭代中读取的字节数设置为不超过文件大小的1/9。
https://stackoverflow.com/questions/22388753
复制相似问题