目标:实现手机和电脑文件的共享互传。
主要内容:手机端主要是图片文件,电脑端是常用文件。
注意要点:
服务器端
1. 服务端,服务器要可以接收网页post过来的文件和相关信息(牛逼方法socket)。
2. 服务端可以asp.net/php/jsp来写,本次采用jsp+servlet。
3. 注意文件类型过来,文件大小,缓存大小的设置。
4. commons-fileupload-1.3.1+commons-io-2.4配合使用,调用方便。
5. 服务端要在多个服务器测试,单文件,多文件测试,多浏览器测试。
6. 测试上传文件,中文名,重命名或者覆盖问题。
7. 注意文件类型过来,文件大小,缓存大小的设置。
8. 读取指定文件夹的文件,显示已经上传的文件列表。
9. 增加文件下载链接,点击直接下载,让安卓客服端弹出下载对话框或者自动下载。
安卓客服端
1. 上传图片涉及选中图片,多选,单选,预览。一开始采用:luminousman.MultipleImagePick的选图方式,后来增加鸿祥的仿照微信多选方式。
2. 缓存图片开源的universal-image-loader-1.9.0。
3. 获取图片路径注意:Uri路径转换成文件的真实路径。
4. 用AsyncHttpClient来post文件,注意设置STORAGE和INTERNET权限
5. android-async-http-1.4.9包会遇到找不到cz.msebera.android.httpclient的问题,需要引入另外一个包httpclient-4.3.6
6. AsyncHttpClient上传文件post过程,url和params参数要写对。
7. 系统设置服务器路径,以便移植。
8. 用WebView来显示已经上传的文件列表。方便浏览查询和文件下载。
9. WebView自定义,返回键返回浏览,而不是退出Activity。销毁时要从父容器移除,并移除所有子view。
10. 查看大图片,感谢鸿祥大神的ZoomImageView!
11. 增加鸿祥OkhttpUtils的上传文件方式。注意:okhttputils2.6.2对应的okhttp3.3.1和okio1.8.0。要java7以上,不然上传过程会出现输入文件流警告。还可以用nohttp上传下载。
12. 下载文件:单线程HttpDownloadThread,多线程DownloadTask两种方式,存放地方内置和外置SD卡,内部网络使用所以不考虑断点续传。
最终完成界面
1选图界面 –2主界面
3查看大图片–4查看上传结果