3 回答
TA贡献1798条经验 获得超3个赞
部分回答您的问题(因为我还没有使用Bot框架)。
本质上,复制Blob操作要求源项目的URL应该是可公开访问的,因为复制操作是异步服务器端操作,并且一旦提交了复制Blob请求,Azure Storage应该能够从源中读取。这就是为什么当您从Google获取URL并使用该URL代替附件的ContentUrl时,您的代码才能工作的原因。
由于我还没有使用Bot框架(因此我将纯粹是在推测),您可以做的一件事是读取要尝试以流形式保存在代码中的附件的内容(不确定如何做到)和然后使用CloudBlockBlob.UploadFromStream
方法上传Blob。
TA贡献1777条经验 获得超3个赞
最后,我发现附件的内容为空,因此我必须使用HttpClient下载内容,然后将文件上传到Azure Blob容器。现在可以了。对于最好奇的:
using (HttpClient client = new HttpClient())
{
using (HttpResponseMessage response = await client.GetAsync(item.ContentUrl))
using (Stream streamToReadFrom = await response.Content.ReadAsStreamAsync())
{
await targetBlob.UploadFromStreamAsync(streamToReadFrom);
}
}
- 3 回答
- 0 关注
- 184 浏览
添加回答
举报