2014-03-05 41 views

回答

1

在寫作沒有.NET庫提供異步上傳文件的Rackspace的雲文件的時間。 但是,有一個承諾,即openstack.net的V2將提供異步支持。

您可以使用HttpClient的現在:

public static async Task<bool> UploadFileAsync(string filepath, string container, string filename) 
{ 
    var httpClient = new HttpClient(); 

    var requestMessage = new HttpRequestMessage(HttpMethod.Post, 
     @"https://identity.api.rackspacecloud.com/v2.0/tokens") 
    { 
     Content = new StringContent(
      @"{ 
       ""auth"": { 
        ""RAX-KSKEY:apiKeyCredentials"": { 
        ""username"": ""username"", 
        ""apiKey"": ""apikey"" 
       } 
      } 
    }") 
    }; 

    requestMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); 

    var response = await httpClient.SendAsync(requestMessage); 

    var responseContent = await response.Content.ReadAsStringAsync(); 

    var obj = JObject.Parse(responseContent); 
    var tokenId = obj.SelectToken("access.token.id").ToObject<string>(); 

    var endpointPublicURL = obj.SelectToken("access.serviceCatalog[?(@.name == 'cloudFiles')].endpoints[0].publicURL"); 


    var fileBytes = File.ReadAllBytes(filepath); 
    using (var httpContent = new ByteArrayContent(fileBytes)) 
    { 
     httpContent.Headers.Add("X-Auth-Token", tokenId); 
     httpContent.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg"); 
     httpContent.Headers.ContentLength = fileBytes.LongLength; 

     var result = await httpClient.PutAsync(endpointPublicURL + "/" + container + "/" filename, httpContent); 
    } 
    return true; 
} 
0

穆罕默德 -

雖然不是異步的,我有一個MVC 4的例子,說明如何在上傳過程中顯示進度條。

它今天早上做了。你可以在這裏找到它:

https://github.com/DonSchenck/ProgressBarMVC4

讓我知道如果這能幫助,或者如果你需要更多。

一切順利,

- 唐·申克,OpenStack.NET開發倡導者,Rackspace公司

+0

謝謝唐的答覆,其實這不是我問。我問的是異步發送文件/隊列不是普通的方式。不管怎樣,謝謝你 :) –

相關問題