目录
文件管理
summer.exists()
判断文件或目录是否存在
注意:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)
Android需申请的权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
语法:
summer.exists(json);
参数:
- json
- file:文件,此参数可以是文件也可以是目录
返回值:
- 类型:布尔
示例代码:
var exist = summer.exists({file : file});$summer.alert(exist);
summer.removeFile()
从指定的位置删除一个文件或目录
注意:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)
Android需申请的权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
语法:
summer.removeFile(json);
参数:
- json
- file:文件名,此参数可以是文件也可以是目录
- callback:删除完成之后的回调函数
返回值:
- json
- status:值为success,表示回调成功。
- delStatus:取值为0时,删除失败;取值为1时,删除成功。
- msg:错误消息,删除失败时才会有错误消息。
示例代码:
summer.removeFile({"file" : filename,"callback" : "removeCallback()"})function removeCallback(args) {alert(args.delStatus);}
summer.getFileInfo()
获取文件信息的服务
注意:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)
Android需申请的权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
语法:
summer.getFileInfo(filepath);
参数:
- filepath:文件全路径,如”xxx/xxx/file.txt”
以下为常见场景
- 下载完成之后获取下载的文件信息
- 相机拍完之后,获取文件信息
- 从相册获取之后,获取文件信息
示例:
summer.getFileInfo("data/0/user/***.png");
summer.openFile()
打开文件服务
注意:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)
Android需申请的权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
语法:
summer.openFile(json);
参数:
- json
- filename:文件名 > 一般结合下载使用,filename值为下载时重新命名的filename
- filetype:支持手机能打开的格式.txt,.doc,*.pdf等
- filepath:文件路径 > 一般结合下载使用,filepath值为下载时提供的filepath
示例:
summer.openFile({"filename" : "xxx.png","filetype" : "png","filepath" : "download/image"})
summer.openFileSelector()
打开系统文件服务(仅安卓支持)
注意:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)
Android需申请的权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
语法:
summer.openFileSelector(json);
参数:
- json
- callback:回调函数 > 打开系统文件之后执行的函数
示例:
summer.openFileSelector({"callback" : "mycallback()"})
summer.multiUpload()(推荐)
上传文件,支持多文件(图片)上传
注意:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)
Android需申请的权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
语法:
summer.multiUpload(json,sFn,eFn);
参数:
- json
- fileArray:文件列表,数组
- fileURL:需要上传的文件路径地址(本机路径,常见情景为拍照和相册返回的路径)
- type:上传文件的类型 > 例:图片为”image/jpeg”
- name:后台取图片的Key,此key值在fileArray中,每个列表都需要不一样,即是文件列表的标识,保持唯一性
- params:上传参数
- headers:请求头
- SERVER:服务器地址
- timeout:超时时间,单位秒
- fileArray:文件列表,数组
- sFn:成功的回调函数,注意:回调函数必须使用双引号引起来
- eFn:失败的回调函数,注意:回调函数必须使用双引号引起来
注意
fileArray中每个对象的name值不能相同,它是文件列表中每个文件对象的标识
示例:
summer.multiUpload({fileArray : [{fileURL : "path1",type : "image/jpeg",name : "imgs1"},{fileURL : "path2",type : "image/jpeg",name : "imgs2"}],params : {a : "1",b : 2},headers : {},SERVER : "http://***",timeout : 10}, "multiUploadCallback()", "multiUploadErrCallback()");function multiUploadCallback(ret){alert("成功"+ JSON.stringify(ret));},function multiUploadErrCallback(err){alert("失败"+ JSON.stringify(err));}
服务器代码样例:
@RequestMapping(value = "/upload", method = RequestMethod.POST)@ResponseBodypublic Map<String,Object> uploadFiles(HttpServletRequest request) {Map<String,Object> result = new HashMap<String,Object>();// 获取前台传递的userId参数String userId = request.getParameter("userId");// 多文件上传处理类MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;// 这里循环处理上传的文件for (Iterator<String> it = multiRequest.getFileNames(); it.hasNext(); ) {// 上传文件列表的key信息String fileKey = it.next();// 获取上传的文件信息MultipartFile multipartFile = multiRequest.getFile(fileKey);// 判断文件是否为空String sourceFileName = multipartFile.getOriginalFilename();if (sourceFileName == null || sourceFileName.length() == 0) {// 获取到文件为空,这里不允许上传空文件result.put("status",0);result.put("msg","上传文件为空!");return result;}// 上传文件名称String uploadFileName = sourceFileName.substring(0, sourceFileName.lastIndexOf("."));// 上传文件类型String uploadFileType = sourceFileName.substring(sourceFileName.lastIndexOf("."));// 上传文件时间long uploadTime = System.currentTimeMillis();// 保存的文件名称(这里设置为上传的文件名_时间戳)String tempFileName = uploadFileName + "_" + uploadTime;// 获取用户上传路径 /home/littlemod/upload/userId/uploadTime/fileNameFile uploadFileSave = new File("/home/littlemod/temp" + File.separator + userId + File.separator + uploadTime + File.separator + tempFileName + uploadFileType);// 父目录不存在,则需要先创建if (!uploadFileSave.getParentFile().exists()) {boolean createDirResult = uploadFileSave.getParentFile().mkdirs();if (!createDirResult) {// 创建父目录失败,后续肯定也无法保存文件result.put("status",0);result.put("msg","无法创建上传文件缓存目录!");return result;}}try {// 转存文件到上传文件路径/userId/fileNamemultipartFile.transferTo(uploadFileSave);// 文件操作自己处理// TODO} catch (Exception e) {// 上传出现存储问题,直接返回result.put("status",0);result.put("msg","上传文件出现异常!" + e.toString());return result;}}// 完成上传result.put("status",1);result.put("msg","完成上传!");return result;}
summer.upload()(Cordova transfer实现)
上传文件
注意:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)
Android需申请的权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
语法:
summer.upload(json,sFn,eFn,headers);
参数:
- json
- fileURL:需要上传的文件路径地址(本机路径,常见情景为拍照和相册返回的路径)
- type:上传文件的类型 > 例:图片为”image/jpeg”
- params:上传参数
- SERVER:服务器地址
- sFn:成功的回调函数
- eFn:失败的回调函数
- headers:类型:JSON 对象,默认值:无,描述:(可选项)请求头
注意事项:
必须先选择cordova-plugin-file-transfer插件
示例:
summer.upload({fileURL : "",type : "image/jpeg",params : {a : 1},SERVER : "http://***"},function (ret){alert("成功"+ JSON.parse(ret));},function(err){alert("失败"+ JSON.parse(err));},headers);
服务器代码样例:
@RequestMapping(value = "/upload", method = RequestMethod.POST)@ResponseBodypublic Map<String,Object> uploadFiles(HttpServletRequest request) {Map<String,Object> result = new HashMap<String,Object>();// 获取前台传递的userId参数String userId = request.getParameter("userId");// 文件上传处理类MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;// 这里循环处理上传的文件(此处是单文件上传,不用循环)for (Iterator<String> it = multiRequest.getFileNames(); it.hasNext(); ) {// 上传文件列表的key信息String fileKey = it.next();// 获取上传的文件信息MultipartFile multipartFile = multiRequest.getFile(fileKey);// 判断文件是否为空String sourceFileName = multipartFile.getOriginalFilename();if (sourceFileName == null || sourceFileName.length() == 0) {// 获取到文件为空,这里不允许上传空文件result.put("status",0);result.put("msg","上传文件为空!");return result;}// 上传文件名称String uploadFileName = sourceFileName.substring(0, sourceFileName.lastIndexOf("."));// 上传文件类型String uploadFileType = sourceFileName.substring(sourceFileName.lastIndexOf("."));// 上传文件时间long uploadTime = System.currentTimeMillis();// 保存的文件名称(这里设置为上传的文件名_时间戳)String tempFileName = uploadFileName + "_" + uploadTime;// 获取用户上传路径 /home/littlemod/upload/userId/uploadTime/fileNameFile uploadFileSave = new File("/home/littlemod/temp" + File.separator + userId + File.separator + uploadTime + File.separator + tempFileName + uploadFileType);// 父目录不存在,则需要先创建if (!uploadFileSave.getParentFile().exists()) {boolean createDirResult = uploadFileSave.getParentFile().mkdirs();if (!createDirResult) {// 创建父目录失败,后续肯定也无法保存文件result.put("status",0);result.put("msg","无法创建上传文件缓存目录!");return result;}}try {// 转存文件到上传文件路径/userId/fileNamemultipartFile.transferTo(uploadFileSave);// 文件操作自己处理// TODO} catch (Exception e) {// 上传出现存储问题,直接返回result.put("status",0);result.put("msg","上传文件出现异常!" + e.toString());return result;}}// 完成上传result.put("status",1);result.put("msg","完成上传!");return result;}
summer.download()
下载文件
注意:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)
Android需申请的权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
语法:
summer.download(json);
参数:
- json
- url:下载文件的url
- locate:下载后文件存放的路径
- filename:下载后重命名的文件名
- override:下载后是否覆盖同名文件(true和false)
- callback:下载完成之后的回调函数
示例:
summer.download({"url" : "http://xxx/xxx/xxx.png","locate" : "download/image","filename" : "newfile.png","override" : "true","callback" : "downloadCallBack()"})function downloadCallBack(args){if(args.isfinish){alert("下载成功"); //多次回调,用于进度条提示}}
返回值
{"isfinish":true,"savePath":"/data/user/0/com.yonyou.summertest/files/download/image/test.jpg","filename":"test.jpg","url":"http://img.zcool.cn/community/1.jpg","filepath":"download/image","path":"/data/user/0/com.yonyou.summertest/files/download/image/1.jpg"}
summer.compressImage()
压缩图片
注意:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)
Android需申请的权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
语法
summer.compressImage({"src": "","path": "","compressWidth": "","compressHeight": "","quality": "","callback": function(arg) {}})
参数:
- src:待压缩图片的路径
- path:压缩完图片保存的路径,该参数可选
- compressWidth:图片压缩的宽度
- compressHeight:图片压缩的高度
- quality:图片压缩的清晰度,取值范围:0~1,如:0.8表示按照图片的质量的80%进行压缩。
- callback:压缩完成之后的回调函数
示例代码
summer.openCamera({"callback" : function(args){//压缩图片summer.compressImage({"src": args.imgPath,"path": "","compressWidth": "1000","compressHeight": "1000","quality": "0.8","callback": function(arg) {alert("图片压缩路径:"+arg.savepath);}});}});
summer.fileToBase64()
文件转换成Base64串
注意1:此方法限用大小100kb以内的文件,如果是大文件,建议先进行压缩
注意2:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)
Android需申请的权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
语法
summer.fileToBase64({"filePath" : "", //文件路径"callback" : function(ret){}})
参数:
- filePath:文件路径
- callback:异步回调方法
返回值:
- result:base64串
示例代码:
summer.fileToBase64({"filePath" : "image/IUAP_45672.jpg","callback" : function(ret){$summer.alert(ret.result);}})
summer.base64ToFile()
Base64串转换成文件
注意1:此方法限用大小100kb以内的文件
注意2:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)
Android需申请的权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
语法
summer.base64ToFile({"base64" : "", //base64串"filePath" : "", //文件路径"callback" : function(ret){}})
参数:
- base64:base64串
- filePath:文件路径
- callback:异步回调方法
返回值:
- result:返回文件存储的路径值
示例代码:
summer.base64ToFile({"base64" : "","filePath" : "image/IUAP_45672.jpg","callback" : function(ret){$summer.alert(ret.result);}})
summer.saveImageToAlbum()
保存图片到相册
注意:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)
Android需申请的权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
语法
summer.saveImageToAlbum({"override" : true, //覆盖图片,仅Android生效"path": "", //源图片本地路径,如果是网络图片需要先调用download下载"albumTitle": "", //相册名称"callback": function(arg) {}})
参数:
- override : 为true为覆盖图片,仅Android生效,可选
- path:本地图片路径,如果是网络图片需要先调用download下载
- albumTitle:相册名称,可选
- callback:保存完成之后的回调函数
示例代码
summer.saveImageToAlbum({"path": "xxx/xxx.png", //本地图片路径,如果是网络图片需要先调用download下载"albumTitle": "风景", //相册名称"callback" : function(args){$summer.alert(args);}});
summer.doodle()
对图片进行涂鸦
注意:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)
Android需申请的权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
语法
summer.doodle({"src": "要进行涂鸦的图片", //源图片本地路径,如果是网络图片需要先调用download下载"callback": "doodleSuccess()", //正确回调"error": "doodleError()" //错误回调})
参数:
- src:本地图片路径,如果是网络图片需要先调用download下载
- callback:正确回调
- error:错误回调
示例代码
summer.doodle({"src": "xxx/xxx.png","callback": "doodleSuccess()","error" : "doodleError()"});function doodleSuccess(args){$summer.alert(args.out) //args.out为涂鸦图片保存后的图片路径}function doodleError(args){$summer.alert(args)}