开源夏令营第三周-删除文件、文件夹操作

本文介绍了如何利用Seafile的Web API进行文件和文件夹的删除操作,涉及到HTTP的DELETE、HEAD和GET方法,以及如何处理权限验证和参数传递。通过示例请求和代码解析,帮助读者理解API的使用,并提到了添加确认弹窗的人性化设计。同时,建议学习《HTTP 权威指南》以深入理解HTTP方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先还是衷心感谢林老师的悉心教导


下面直入主题:

seafile对文件的存储类似于网盘,是将所有文件存在服务器上,所以要进行文件操作就必须要调用seafile提供的web api。所以不仅需要一些安卓开发的基本功,也要对http有一定的了解。在这个功能中主要用到的是HttpRequest类。

在Http中对服务器进行传参的方法(HTTPMethod)有以下几种:

DELETE 
GET 
HEAD 
PATCH 
POST 
PUT 

具体区别各个大神介绍已十分详备,此处就不再赘述

通过参考http://manual.seafile.com/develop/web_api.html#delete-file 所给的参数要求,进行delete操作需要用HEAD、DELETE和GET方法传参

其中HEAD中要放入Token,作为与服务器进行数据交流的资格证明,而repo-id和p则要通过get方式放入url的最后进行传参,最终的Sample request如下:

curl -X DELETE -v  -H 'Authorization: Token f2210dacd3606d94ff8e61d99b477fd' -H 'Accept: application/json; charset=utf-8; indent=4' https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/file/?p=/foo.c

如果像我一样对HTTP基本功较差的同学可以和rename操作(http://manual.seafile.com/develop/web_api.html#rename-file)比对着学习,rename操作中使用到了HEAD、POST和GET传参,相比较两者的Sample reques可对这些不同的方式有个大概了解,若想要深入并精通,林老师推荐看《HTTP 权威指南》这本书。


如果看过SeafConnection.java中delete函数的同学可能对这里比较迷惑

Map<String, Object> params = new HashMap<String, Object>();
	    params.put("p", path);
	    params.put("reloaddir", "true");
这里向服务器传送了一个web-api中没提及的参数reloaddir,他的作用在于对文件进行操作后,本地缓存的文件列表也要更新,通过这个参数服务器会发送一份新的文件列表,这样不仅可以精简代码,也可以提高程序运行效率。

解决完最关键的问题后app里面的操作就比较简单,如何创建delete按钮上周我也有所提及,看下NewQuickAction的Demo(https://github.com/haiwen/NewQuickAction)会有助于理解。

徒有按钮并不人性化,需要一个确认弹窗,防止手滑点击delete按钮资料丢失,我便写了一个DeleteFileDialog.java文件,代码也很简单,不在多述

将这些零散的部件都做好后最后在DataManager.java文件中添加一个函数将各部分关联起来便可达成目的。


PS:Seafile程序中写的排BUG代码很精练,也考虑到优先使用更安全的HTTPS方式连接,很值得我们新手学习!


接下来的任务就是抓紧时间将复制、移动功能实现,实现后的总结感想我也会抓紧跟上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值