C# RackSpace CloudFiles如何使用异步或队列使用C发送文件#

C# RackSpace CloudFiles如何使用异步或队列使用C发送文件#,c#,.net,asp.net-mvc,rackspace-cloud,rackspace,C#,.net,Asp.net Mvc,Rackspace Cloud,Rackspace,我有一个ASP.NETMVC项目,我需要将文件异步上传到RackSpace CloudFiles,或者使用api中的队列功能,有什么例子吗?我没有在openstack.net文档和C代码示例中找到它。Mohamed-- 虽然不是异步的,但我有一个MVC4示例,演示了如何在上传过程中显示进度条 就在今天早上。您可以在此处找到它: 让我知道这是否有帮助,或者如果你需要更多 祝你一切顺利 --Don Schenck,OpenStack.NET开发人员倡导者,Rackspace在撰写本文时,没有.NE

我有一个ASP.NETMVC项目,我需要将文件异步上传到RackSpace CloudFiles,或者使用api中的队列功能,有什么例子吗?我没有在openstack.net文档和C代码示例中找到它。

Mohamed--

虽然不是异步的,但我有一个MVC4示例,演示了如何在上传过程中显示进度条

就在今天早上。您可以在此处找到它:

让我知道这是否有帮助,或者如果你需要更多

祝你一切顺利


--Don Schenck,OpenStack.NET开发人员倡导者,Rackspace

在撰写本文时,没有.NET库为Rackspace云文件提供异步文件上传。 然而,有一个承诺,即的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;
}
publicstaticasync任务UploadFileAsync(字符串文件路径、字符串容器、字符串文件名)
{
var httpClient=新的httpClient();
var requestMessage=新的HttpRequestMessage(HttpMethod.Post,
@"https://identity.api.rackspacecloud.com/v2.0/tokens")
{
内容=新内容(
@"{ 
“身份验证”:
“”RAX-KSKEY:apiKeyCredentials”“:{
“用户名”:“用户名”,
“apiKey”:“apiKey”
}
}
}")
};
requestMessage.Content.Headers.ContentType=新的MediaTypeHeaderValue(“应用程序/json”);
var response=wait-httpClient.sendsync(requestMessage);
var responseContent=await response.Content.ReadAsStringAsync();
var obj=JObject.Parse(responseContent);
var tokenId=obj.SelectToken(“access.token.id”).ToObject();
var endpointPublicURL=obj.SelectToken(“access.serviceCatalog[?(@.name=='cloudFiles'))。端点[0]。publicURL”);
var fileBytes=File.ReadAllBytes(文件路径);
使用(var httpContent=newbytearraycontent(fileBytes))
{
httpContent.Headers.Add(“X-Auth-Token”,tokenId);
httpContent.Headers.ContentType=新的MediaTypeHeaderValue(“图像/jpeg”);
httpContent.Headers.ContentLength=fileBytes.LongLength;
var result=await-httpClient.PutAsync(endpointPublicURL+“/”+容器+“/”文件名,httpContent);
}
返回true;
}

谢谢你的回复,事实上这不是我要问的。我问的是异步/排队发送文件,而不是普通的方式。无论如何,谢谢你:)