上传存储在Azure Blob存储中的文件
问题描述:
我必须通过webclient将文件上传到Listen360,但我的文件存储在Azure Blob存储中。当我将存储在BLOB存储中的文件的URL作为路径时,它会提供“不支持URI格式”。上传存储在Azure Blob存储中的文件
UploadFile(URI,文件名)
它,当我给文件名而不是存储文件的Blob存储URL的本地路径工作。
有什么建议吗?
答
您可能想要在本地下载文件,并将其转储到临时文件夹,然后将其删除,假设这是您唯一可以做到的方法。
string fileName = Path.GetTempPath() + Guid.NewGuid().ToString() + ".xml";
using(var client = new WebClient())
{
client.DownloadFile(blob.URL, fileName);
UploadFile(fileName, "mystuff.xml");
File.Delete(fileName);
}
+0
我的系统托管在天蓝色的云中。是否有可能将下载的文件保存在本地路径中? – Rushan
+0
是的,应该工作 –
答
WebClient.UploadFile只允许指定的本地文件上传到具有指定URI的资源。我们可以使用流将文件上传到资源。以下是我的示例演示代码。它适用于我。
using (var client = new WebClient())
{
var download = client.DownloadData("blob url");
client.Credentials = new NetworkCredential(@"userName","password");// Some code for authenticating
var clientStream =client.OpenWrite(new Uri("your Url"));
clientStream.Write(download, 0, download.Length);
clientStream.Close();
}
不确定'UploadFile()'是什么。但是...... blob与本地文件不同 - 你不能将标准I/O库与blob一起使用。你可以编辑你的问题,以更具体地将URL传递给'UploadFile()'吗? (意思是...你传递一个blob url作为'filename'参数吗?) –
编辑了这个问题,我需要传递blob url作为文件名。 – Rushan
你有关于此主题的任何更新吗? –