1

我正在使用https://github.com/rackspace/csharp-cloudfiles来构建一个命令行工具来将文件上传到 Rackspace Cloud Files。

问题是我不知道如何跟踪上传进度(似乎没有任何类型的事件或其他东西)。

这是代码:

// Create credentials, client and connection
var creds = new UserCredentials(username, apiKey);
CF_Client client = new CF_Client();
Connection conn = new CF_Connection(creds, client);
conn.Authenticate();

// Get container and upload file
var container = new CF_Container(conn, client, containerName);
var obj = new CF_Object(conn, container, client, remoteFileName);
obj.WriteFromFile(localFilePath);
4

1 回答 1

1

看起来没有内置的,不,但您可能会添加自己的。

另一种方法是测量输入;如果您查看源代码,您会发现 WriteFromFile 实际上只是

Dictionary<string,string> headers = new Dictionary<string,string>();
using(Stream stream = System.IO.File.OpenRead(localFilePath))
{
    obj.Write(stream, headers);
}

因此您可以将传递给 Write 的流包装在另一个流类中,该流类测量总字节读取进度(如果您搜索,周围有一些,或者很容易自己编写)。如果您确实想从他们的代码中添加进度通知,则需要将其添加到包装的OpenStack 客户端对象中,但这也不应该太难。

于 2012-05-03T09:34:47.137 回答