我的项目是一个比较大的工程,前端可以理解为安卓客户端,服务端是采用JFinal这个框架。这个框架的作者是我很欣赏的技术大牛@JFinal 。我在这里极力推荐那些进行服务端或是API开发的同学或是工作者,采用这个框架进行开发,因为它会给你一种极速的体验,用过之后请自觉对比一下用JFinal与用struts之间的区别,这个谁用谁知道。Jfinal官网:http://www.jfinal.com 开发中遇到这种问题都可以请教@JFinal ,和蔼可亲,平易近人。不过个人建议简单的那些问题例如配置出错什么的还是自行解决,大的费解的问题可以直接骚扰@JFinal ,没有问题的,本人亲测!哈哈。。。然后我再推荐一下七牛云,如果你开发的项目需要存储大量的文件,我个人真心推荐七牛云,官网:http://www.qiniu.com ,本人在七牛的使用中遇到了问题,然后去论坛发帖,第二天就收到了七牛技术支持人员的电话,大家可以自行体会本人当时的激动心情。
废话少说,直接进入正题:
1.我的项目干什么?
用户利用安卓客户端在多个topic下上传文件,服务端将这些音频文件进行重命名(TopicId + UserId + 随机6位数 + .文件格式)上传到七牛云下指定的空间(bucket),后期我需要根据文件的文件名进行指定URL下载。
2.遇到的问题:
七牛java-sdk没有提供批量下载文件的API接口,这样的话,就需要先得到制定空间下的文件列表信息,在这里,我只需要得到文件的Key就可以了。因为此时批量下载的实现就是需要知道文件的URL地址,一般就是domain+文件名(Key).
接着,我写了如下的一个action:
结果得到这样的结果:
返回的json竟然是空的!!!但是在后台可以打印出来,这就奇了怪了!于是,我做了如下操作:
因为我意识到这应该是七牛ListItem的问题,于是想转化成普通常用熟悉的List,但是结果还是:
3.解决问题:
于是google 七牛的java-sdk的API文档,竟然没有找到。扣了一下脑袋之后,想了想,这个ListItem里有那么几个字段,我直接取出我想要的字段(Key)不就得了,于是我改写了一下action:
直接取key值add进空的list,这个字段是String类型,得到的结果:
浏览器上显示:
再看看七牛空间里的文件:
这样子,得到文件的Key,然后直接根据domain + Key 的URL下载这个文件。我现在还不清楚,JFinal的renderFile(URL)可以解决这个批量下载的不?以我的记忆里来看,应该够呛。
最后,感谢JFinal + 七牛云存储!
来源:oschina
链接:https://my.oschina.net/u/2297997/blog/413400