iOS
Android
Python
文件与目录说明
让我们回顾一下. 我们已经搭建好环境 我们已了解到怎样与私密云 建立一个会话.现在,我们会看到如何使用的API列表,上传和下载文件到您的私密云文件夹.
1、上传文件
比方说,我们建立了一个文本编辑应用程序,我们希望用它来保存您的杰作到私密云。在Python文档( client.py)。如果您向下滚动,会发现put_file.
这看起来正是我们寻找的put_file方法,如果我们要上传的文件是working-draft.txt,而且我们已采取完成用户授权教程,上传文件很容易:
ROOT="/simiyun"
file_path = ROOT+"/test_file.txt"
file = open("test_file.txt", "rb")
response = api.files_put(
method = "PUT",
file = file,
file_path = file_path)
print "uploaded:", response
如果一切进展顺利 test_file.txt现在您的应用程序文件夹的名义下的根目录就有了 test_file.txt文件.
返回值是一个字典,包含新上载的文件的元数据。大致是这样的:
{
'bytes': 77,
'icon': 'test_file.txt',
'is_dir': False,
'mime_type': 'text/plain',
'modified': 'Wed, 20 Jul 2011 22:04:50 +0000',
'path': '/test_file.txt',
'rev': '362e2029684fe',
'revision': 221922,
'root': 'Simiyun',
'size': '77 bytes',
'thumb_exists': False
}
2、获取文件或文件夹的元数据
呵呵!如果您仔细阅读元数据中的各个条目 ,我们得到什么?
ROOT="/simiyun"
folder_metadata = api.metadata(
method = "GET",
file_path = ROOT+"/test_011_metada_get",
list = True,
hash = None,
file_limit = 10000,
include_deleted = True)
print "metadata:", folder_metadata
返回的字典会列出在文件和文件夹 path指定。它看起来像这样:
{'bytes': 0,
'contents': [{'bytes': 0,
'icon': 'folder',
'is_dir': True,
'modified': 'Thu, 25 Aug 2011 00:03:15 +0000',
'path': '/Sample Folder',
'rev': '803beb471',
'revision': 8,
'root': 'Simiyun',
'size': '0 bytes',
'thumb_exists': False},
{'bytes': 77,
'icon': 'page_white_text',
'is_dir': False,
'mime_type': 'text/plain',
'modified': 'Wed, 20 Jul 2011 22:04:50 +0000',
'path': '/magnum-opus.txt',
'rev': '362e2029684fe',
'revision': 221922,
'root': 'Simiyun',
'size': '77 bytes',
'thumb_exists': False}],
'hash': 'efdac89c4da886a9cece1927e6c22977',
'icon': 'folder',
'is_dir': True,
'path': '/',
'root': 'app_folder',
'size': '0 bytes',
'thumb_exists': False}
返回的字典会列出在文件和文件夹 path指定。它看起来像这样:
3、下载文件
有时候我们需要get_file的方法来下载文件.
ROOT="/simiyun"
meta = api.files(
method = "GET",
file_path = ROOT + "/test.txt",
raw = True
)
print meta
get_file, 它返回文件内容。当您上传文件到私密云文件会同步私密云用户的每台计算机和移动设备。
Root="/simiyun"
meta = api.files(
method = "GET",
file_path = ROOT + "/test.txt",
rev = revision,
raw = True
)
print meta
您根据例子,就可以动手写出自己的code.
您配备了几乎所有你需要 与API开始。如需更多的信息,下载Python SDK,祝您好运!
如果Android已经关闭了你的应用程序后,用户授权私密云访问中,我们将有来查找访问我们先前存储的key 在按照 authentication教程 并将其附加到一个新的会话.
AccessTokenPair access = getStoredKeys(); mDBApi.getSession().setAccessTokenPair(access);
现在,我们准备做一些API调用。
1、上传文件
public void put(String fileName, String path, boolean overwrite)
throws SimiyunException {
File file = new File(fileName);
FileInputStream fis;
try {
fis = new FileInputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
return;
}
if (overwrite) {
mApi.putFileOverwrite(path, fis, file.length(), null);
} else {
mApi.putFile(path, fis, file.length(), null, null);
}
}
我们运行它,一个新的文件将在私密云出现。
2、查找文件元数据
// Metadata
try {
Entry existingEntry = mDBApi.metadata("/testing.txt", 1, null, false, null);
Log.i("DbExampleLog", "The file's rev is now: " + existingEntry.rev);
} catch (SimiyunException e) {
Log.e("DbExampleLog", "Something went wrong while getting metadata.");
}
输出应该像这样:
The file's rev is now: 2653b105684af
3、下载文件
// Get file.
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
try {
mDBApi.getFile("/testing.txt", null, outputStream, null);
Log.i("DbExampleLog", "The file's contents are: " +
new String(outputStream.toByteArray()));
} catch (SimiyunException e) {
Log.e("DbExampleLog", "Something went wrong while downloading.");
}
就像这个 putFile 方法, 我们使用一个虚拟的输出 流来处理文件的内容。
如需更多信息,请下载SDK您可以细读 REST APIin the /development/referencesection. 祝你好运!
1、上传文件
现在,您已经创建了一个SimiyunAPI对象,你准备提出要求。首先,让我们上传一个文件:
NSString *localPath = [[NSBundle mainBundle] pathForResource:@"Info" ofType:@"plist"];
NSString *destFile = @"/Info.plist";
NSString* identifier = [api uploadFile:destFile
fromPath:localPath
withParentRev:nil
overwrite:YES];
当我们调用这个方法, destFile是目标路径,这个文件将被 放置在用户的私密云中。如果你是上传一个新的文件,设置 withParentRev为 nil
, 这将防止覆盖上传已有的文件。fromPath是你的设备中的完整路径.
所有的方法在 SimiyunAPI都是异步的, 这意味着他们是来装载数据,他们没有立即返回。每种方法至少有两个相应的
SimiyunAPIDelegate调用的方法,用以描述一个请求是成功还是失败。成功回调会给你的数据,失败回调将包含的 NSError对象有更多的 为什么细节的请求失败。下面是对应的委托方法:
- (void)metaReceived:(SimiyunMeta *)meta
forRequest:(NSString *)identifier
{
NSLog(@"metaReceived from identifier = %@", identifier);
}
- (void)requestFailed:(NSString *)identifier
withError:(NSError *)error
{
NSLog(@"request failed from identifier = %@ with error - %@", identifier, error);
}
获取在文件夹下的文件
你可以列出你刚才上传的文件夹中的文件下面的调用:
[api getMetadata:@"/"];
其余的客户端将调用您的委托与下列之一 回调:
- (void)metaReceived:(SimiyunMeta *)meta
forRequest:(NSString *)identifier
{
NSLog(@"metaReceived from identifier = %@", identifier);
if (meta.isDirectory)
{
NSLog(@"Folder '%@' contains:", metadata.path);
for (SimiyunMeta *file in meta.contents)
{
NSLog(@"\t%@", file.path);
}
}
}
- (void)requestFailed:(NSString *)identifier
withError:(NSError *)error
{
NSLog(@"request failed from identifier = %@ with error - %@", identifier, error);
}
元数据对象是如何得到的文件和文件夹的信息 用户的私密云.调用 getMetadata
获取在根目录的所有元数据,因为它是一个文件夹 内容属性将包含一个文件和文件夹的列表。检查 SimiyunMeta.h 去了解所有的元数据对象信息.
下载文件
一旦你有一个文件夹中的文件列表,你就可以下载任意一个文件。 要做到这一点,你需要调用以下:
NSString* identifier = [api getFile:srcPath
toPath:toPath];
看这srcPath是用户在私密云(您路径可能是从元数据对象)中的路径,
destPath是在本地设备上的位置,你想要的文件已下载后。要找出当文件下载成功或未能实施以下的SimiyunAPIDelegate方法:
- (void)requestSucceeded:(NSString *)identifier
{
NSLog(@"request successed from identifier=%@", identifier);
}
- (void)requestFailed:(NSString *)identifier
withError:(NSError *)error
{
NSLog(@"request failed from identifier = %@ with error - %@", identifier, error);
}
现在,您已经看到如何执行所有的基本操作,您准备开始构建您的应用程序。要看到所有的操作和各自的回调方法请看看SDK中的SimiyunAPI.h。如果你还没有确定的事情,开发商论坛是一个可以找到信息的地方,并可以直接联系开发商。