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