采用byte[]变量,而不是直接的本地文件路径

本文关键字:路径 文件 byte 变量 采用 | 更新日期: 2023-09-27 17:59:13

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

APIPutStorageItem(字符串ContainerName,字符串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[]。我可以使用变量而不是本地路径吗?

采用byte[]变量,而不是直接的本地文件路径

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

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

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

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

我过去做过第二次,需要设置某些标头,而库代码只允许添加"meta"标头。如果沿着这条路走下去,主页可以在这里找到,.Net绑定在这里的github上。

还有一个更像黑客的最后选择。

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

显然,最后一个选项有点麻烦,而且随着时间的推移,磁盘空间和清理都会出现问题,尤其是在上传大量数据的情况下。