0

Мне нужно загрузить файл в Listen360 через webclient, но мой файл хранится в хранилище Azure blob. Когда я указываю URL сохраненного файла в хранилище blob как путь, он дает «форматы URI не поддерживаются».Загрузить файл, хранящийся в хранилище Azure blob

UploadFile (URI, имя файла)

Это работает, когда я даю локальный путь к имени файла, но не для больших двоичных объектов URL хранения сохраненного файла.

Любые предложения?

+0

Не уверен, что такое 'UploadFile()'. Но ... blobs - это не то же самое, что и локальные файлы - вы не можете использовать стандартные библиотеки ввода-вывода с блоками. Можете ли вы изменить свой вопрос, чтобы уточнить, где вы передаете URL-адрес «UploadFile()»? (означает ... вы передаете blob-url как параметр 'filename'?) –

+0

Отредактировал вопрос, и мне нужно передать blob-url в качестве имени файла. – Rushan

+0

Есть ли у вас все обновления по теме? –

ответ

1

Возможно, вы захотите загрузить файл локально и выгрузить его в папку temp, а затем удалить его, считая, что это единственный способ сделать это.

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