注册 登录
主题 : 怎么向icloud批量上传文件?
级别: 侠客
UID: 609304
精华: 0
发帖: 170
可可豆: 575 CB
威望: 575 点
在线时间: 177(时)
注册时间: 2017-03-22
最后登录: 2018-10-23
0 楼:  发表于: 2018-08-10 23:52    发自: Web Page
来源于 一般提问 分类

怎么向icloud批量上传文件?   

怎么把本地的图片批量上传到icloud?有没有大牛给提供一份DEMO或思路的代码?谢谢
级别: 骑士
UID: 623940
精华: 0
发帖: 220
可可豆: 390 CB
威望: 390 点
在线时间: 133(时)
注册时间: 2017-09-19
最后登录: 2018-10-17
1 楼:  发表于: 2018-08-11 01:09    发自: Web Page
遍历,对比,确认上传需求,复制到临时目录,上传
级别: 侠客
UID: 609304
精华: 0
发帖: 170
可可豆: 575 CB
威望: 575 点
在线时间: 177(时)
注册时间: 2017-03-22
最后登录: 2018-10-23
2 楼:  发表于: 2018-08-11 09:47    发自: Web Page
回 1楼(409xxxx) 的帖子
上传用什么命令?
[fm setUbiquitous:YES itemAtURL:fileUrl destinationURL:[self iCloudBackupFilePath] error:&error]
用这个命令不行,上传到iCloud后,发现本地的文件没有了,这个是移动不是复制。

还有,上传多个文件需要用什么命令或函数?遍历文件的时候在FOR循环里一个一个上传吗?
级别: 骑士
UID: 623940
精华: 0
发帖: 220
可可豆: 390 CB
威望: 390 点
在线时间: 133(时)
注册时间: 2017-09-19
最后登录: 2018-10-17
3 楼:  发表于: 2018-08-12 20:35    发自: Web Page
setUbiquitous的原理是从一个地址移动到某个地址,会删除旧的地址的文件,所以需要创建到临时文件夹里,然后用setUbiquitous上传即可。

上传到的路径必须原来是不存在的,所以不可以以合并的思维去上传,必须要清空后再上传,并且,icloud文件夹如果不存在,也是需要自己创建的。

所以,遍历所有的文件,并且让文件夹在前面,短地址在前面,然后遍历创建或者上传。
级别: 侠客
UID: 609304
精华: 0
发帖: 170
可可豆: 575 CB
威望: 575 点
在线时间: 177(时)
注册时间: 2017-03-22
最后登录: 2018-10-23
4 楼:  发表于: 2018-08-19 16:01    发自: Web Page
回 3楼(409xxxx) 的帖子
明白了,现在还有一个问题。就是如果批量上传我怎么获取到所有文件都上传成功?

我现在能想到的思路就是遍历上传的时候,每次都加1,最后如果这个变量的值等于总数就是上传完成。但我总觉得这么做逻辑上有漏洞,但又想不出更好的办法。

还有,我发现用copyItemAtPath也能直接把文件复制到icloud,不知道实现中这么用行不行,因为确实在网上没发现有这么做的。
级别: 骑士
UID: 623940
精华: 0
发帖: 220
可可豆: 390 CB
威望: 390 点
在线时间: 133(时)
注册时间: 2017-09-19
最后登录: 2018-10-17
5 楼:  发表于: 2018-08-20 13:58    发自: Web Page
回 4楼(sbqios2017) 的帖子
可以这样用copyItem的方法,因为iCloud的原理其实是监控icloud路径内的文件变化,然后给予上传,但会使得整个流程变得复杂。

比如你要拷贝一个文件到这个路径下,如果原来的文件是存在的,你可能就要删除它然后再拷贝。但是这样会产生一个问题,iCloud会认为这个文件是新的,并不是原来的,哪怕路径和名字一样。所以其他的机器也会收到一个删除文件的消息,然后再出现一条add消息,再最后出现一条修改消息(更新),所以要尽量的避免用copyItem这个方法,除非你不介意它产生的消息,或者说你的图标没有修改,只有1个版本的情况下,就可以用这个方法。

不用什么+1,遍历完成之后得到的文件,都是必有的文件。那么只要保证icloud上有这个文件即可,就是说,你应该考虑当icloud不存在这个文件或者存在的时候如何判断这个文件是否是我需要的是最新的。
级别: 侠客
UID: 609304
精华: 0
发帖: 170
可可豆: 575 CB
威望: 575 点
在线时间: 177(时)
注册时间: 2017-03-22
最后登录: 2018-10-23
6 楼:  发表于: 2018-08-20 14:10    发自: Web Page
回 5楼(409xxxx) 的帖子
如果+1记录,会有什么方法能返回所有文件都复制成功呢?因为我是遍历的时候,一个一个把文件上传上去的。
还有这个帖子也出现了点问题
http://www.cocoachina.com/bbs/read.php?tid=1757880
您看能不能指教一下?谢谢。我是新手,所以老犯一些初级的错误。
级别: 骑士
UID: 623940
精华: 0
发帖: 220
可可豆: 390 CB
威望: 390 点
在线时间: 133(时)
注册时间: 2017-09-19
最后登录: 2018-10-17
7 楼:  发表于: 2018-08-20 21:11    发自: Web Page
回 6楼(sbqios2017) 的帖子
setUbiquitous 方法没有错误产生即为成功

级别: 骑士
UID: 623940
精华: 0
发帖: 220
可可豆: 390 CB
威望: 390 点
在线时间: 133(时)
注册时间: 2017-09-19
最后登录: 2018-10-17
8 楼:  发表于: 2018-08-20 21:31    发自: Web Page
回 6楼(sbqios2017) 的帖子
那二楼代码是对的,在主线程修改就可以了

如果没有进入打印应该检查触发位置,和控件绑定
级别: 侠客
UID: 609304
精华: 0
发帖: 170
可可豆: 575 CB
威望: 575 点
在线时间: 177(时)
注册时间: 2017-03-22
最后登录: 2018-10-23
9 楼:  发表于: 2018-08-21 18:30    发自: Web Page
回 8楼(409xxxx) 的帖子
NSArray *contents = [fm contentsOfDirectoryAtPath:[iCloudDirectory  absoluteString] error:NULL];
我用这种方法遍历iCloud目录为空不知道为什么,网上查了一下,也没有查到,能再指教一下吗?谢谢您 。

本站内容均为本站转发,已尽可能注明出处。因未能核实来源或转发内容图片有权利瑕疵的,请及时联系本站,本站会第一时间进行修改或删除。 QQ : 3442093904

描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部