2011-06-16 81 views
1

Rackspace云文件,PutStorageItem方法被声明为取本地文件路径,我可以使用变量吗? (字符串容器名称,字符串localFilePath);以byte []变量而不是直接本地文件路径?

API PutStorageItem(string ContainerName,string localFilePath);

我的方法声明为

UploadItem(string username, string apiKey, string ContainerName, byte[] Item) 
{ 
    UserCredentials userCredentials = new UserCredentials(new Uri("https://auth.api.rackspacecloud.com/v1.0"), username, apiKey, null, null); 

    Connection connection = new com.mosso.cloudfiles.Connection(userCredentials); 

    connection.PutStorageItem(ContainerName, Item); //<--- X here 
} 

正如你所看到的,PutStorageItem需要一个本地路径字符串,但项目被声明为字节[]。 我可以使用变量而不是本地路径吗?

回答

1

如果Cloudfiles库让你无可奈何的上传功能,您有两个主要选项:

  • 更新您的代码来获得一个文件名,而不是预取数据。

显然这只适用于上传文件而不是存储其他系统的通用数据的情况。

  • 抓取Couldfiles API库源代码的副本,然后添加一个重载以获取数据而不是文件名并重建库。

我已经在过去做过2号码了,因为我需要设置某些标题,而库代码只允许添加“meta”标题。如果沿着这条路线走,主页可以找到here,并且.Net绑定在github上here

有一个最后的选择是更多的黑客。

  • 保存byte[]磁盘上的临时文件(假设你有机会),那么文件名传递给Cloudfiles库。

很显然,这最后一个选项有点不方便,并且随着时间的推移磁盘空间和清理方面会出现问题,尤其是如果您要上传大量数据。