取byte []变量而不是直接本地文件路径?

时间:2011-06-16 12:57:49

标签: c# asp.net string byte rackspace-cloud

Rackspace Cloud文件,PutStorageItem方法被声明为采用本地文件路径,我可以使用变量吗?

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采用本地字符串路径,但Item声明为byte []。 我可以使用变量而不是本地路径吗?

1 个答案:

答案 0 :(得分:1)

如果Cloudfiles库没有为您提供其他上传功能,您有两个主要选项:

  • 更新代码以获取文件名而不是预取数据。

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

  • 获取一份Canfiles API库源代码,然后添加一个重载来获取数据而不是文件名并重建库。

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

最后一个选项更像是黑客攻击。

  • byte[]临时文件保存在磁盘上(假设您有权访问),然后将文件名传递给Cloudfiles库。

显然,最后一个选项有些笨拙,并且随着时间的推移会出现磁盘空间和清理问题,尤其是在上传大量数据时。