0

我必须通过webclient将文件上传到Listen360,但我的文件存储在Azure Blob存储中。当我将存储在BLOB存储中的文件的URL作为路径时,它会提供“不支持URI格式”。上传存储在Azure Blob存储中的文件

UploadFile(URI,文件名)

它,当我给文件名而不是存储文件的Blob存储URL的本地路径工作。

有什么建议吗?

+0

不确定'UploadFile()'是什么。但是...... blob与本地文件不同 - 你不能将标准I/O库与blob一起使用。你可以编辑你的问题,以更具体地将URL传递给'UploadFile()'吗? (意思是...你传递一个blob url作为'filename'参数吗?) –

+0

编辑了这个问题,我需要传递blob url作为文件名。 – Rushan

+0

你有关于此主题的任何更新吗? –

回答

1

您可能想要在本地下载文件,并将其转储到临时文件夹,然后将其删除,假设这是您唯一可以做到的方法。

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

是的,应该工作 –

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(); 
     }