目录

文件管理

summer.exists()

判断文件或目录是否存在

注意:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)

Android需申请的权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE

语法:

  1. summer.exists(json);

参数:

  • json
    • file:文件,此参数可以是文件也可以是目录

返回值:

  • 类型:布尔

示例代码:

  1. var exist = summer.exists({
  2. file : file
  3. });
  4. $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

语法:

  1. summer.removeFile(json);

参数:

  • json
    • file:文件名,此参数可以是文件也可以是目录
    • callback:删除完成之后的回调函数

返回值:

  • json
    • status:值为success,表示回调成功。
    • delStatus:取值为0时,删除失败;取值为1时,删除成功。
    • msg:错误消息,删除失败时才会有错误消息。

示例代码:

  1. summer.removeFile({
  2. "file" : filename,
  3. "callback" : "removeCallback()"
  4. })
  5. function removeCallback(args) {
  6. alert(args.delStatus);
  7. }

summer.getFileInfo()

获取文件信息的服务

注意:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)

Android需申请的权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE

语法:

  1. summer.getFileInfo(filepath);

参数:

  • filepath:文件全路径,如”xxx/xxx/file.txt”

以下为常见场景

  1. 下载完成之后获取下载的文件信息
  2. 相机拍完之后,获取文件信息
  3. 从相册获取之后,获取文件信息

示例:

  1. 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

语法:

  1. summer.openFile(json);

参数:

  • json
    • filename:文件名 > 一般结合下载使用,filename值为下载时重新命名的filename
    • filetype:支持手机能打开的格式.txt,.doc,*.pdf等
    • filepath:文件路径 > 一般结合下载使用,filepath值为下载时提供的filepath

示例:

  1. summer.openFile({
  2. "filename" : "xxx.png",
  3. "filetype" : "png",
  4. "filepath" : "download/image"
  5. })

summer.openFileSelector()

打开系统文件服务(仅安卓支持)

注意:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)

Android需申请的权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE

语法:

  1. summer.openFileSelector(json);

参数:

  • json
    • callback:回调函数 > 打开系统文件之后执行的函数

示例:

  1. summer.openFileSelector({
  2. "callback" : "mycallback()"
  3. })

summer.multiUpload()(推荐)

上传文件,支持多文件(图片)上传

注意:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)

Android需申请的权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE

语法:

  1. summer.multiUpload(json,sFn,eFn);

参数:

  • json
    • fileArray:文件列表,数组
      • fileURL:需要上传的文件路径地址(本机路径,常见情景为拍照和相册返回的路径)
      • type:上传文件的类型 > 例:图片为”image/jpeg”
      • name:后台取图片的Key,此key值在fileArray中,每个列表都需要不一样,即是文件列表的标识,保持唯一性
    • params:上传参数
    • headers:请求头
    • SERVER:服务器地址
    • timeout:超时时间,单位秒
  • sFn:成功的回调函数,注意:回调函数必须使用双引号引起来
  • eFn:失败的回调函数,注意:回调函数必须使用双引号引起来

注意
fileArray中每个对象的name值不能相同,它是文件列表中每个文件对象的标识

示例:

  1. summer.multiUpload({
  2. fileArray : [{
  3. fileURL : "path1",
  4. type : "image/jpeg",
  5. name : "imgs1"
  6. },{
  7. fileURL : "path2",
  8. type : "image/jpeg",
  9. name : "imgs2"
  10. }],
  11. params : {
  12. a : "1",
  13. b : 2
  14. },
  15. headers : {},
  16. SERVER : "http://***",
  17. timeout : 10
  18. }, "multiUploadCallback()", "multiUploadErrCallback()");
  19. function multiUploadCallback(ret){
  20. alert("成功"+ JSON.stringify(ret));
  21. },function multiUploadErrCallback(err){
  22. alert("失败"+ JSON.stringify(err));
  23. }

服务器代码样例:

  1. @RequestMapping(value = "/upload", method = RequestMethod.POST)
  2. @ResponseBody
  3. public Map<String,Object> uploadFiles(HttpServletRequest request) {
  4. Map<String,Object> result = new HashMap<String,Object>();
  5. // 获取前台传递的userId参数
  6. String userId = request.getParameter("userId");
  7. // 多文件上传处理类
  8. MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
  9. // 这里循环处理上传的文件
  10. for (Iterator<String> it = multiRequest.getFileNames(); it.hasNext(); ) {
  11. // 上传文件列表的key信息
  12. String fileKey = it.next();
  13. // 获取上传的文件信息
  14. MultipartFile multipartFile = multiRequest.getFile(fileKey);
  15. // 判断文件是否为空
  16. String sourceFileName = multipartFile.getOriginalFilename();
  17. if (sourceFileName == null || sourceFileName.length() == 0) {
  18. // 获取到文件为空,这里不允许上传空文件
  19. result.put("status",0);
  20. result.put("msg","上传文件为空!");
  21. return result;
  22. }
  23. // 上传文件名称
  24. String uploadFileName = sourceFileName.substring(0, sourceFileName.lastIndexOf("."));
  25. // 上传文件类型
  26. String uploadFileType = sourceFileName.substring(sourceFileName.lastIndexOf("."));
  27. // 上传文件时间
  28. long uploadTime = System.currentTimeMillis();
  29. // 保存的文件名称(这里设置为上传的文件名_时间戳)
  30. String tempFileName = uploadFileName + "_" + uploadTime;
  31. // 获取用户上传路径 /home/littlemod/upload/userId/uploadTime/fileName
  32. File uploadFileSave = new File("/home/littlemod/temp" + File.separator + userId + File.separator + uploadTime + File.separator + tempFileName + uploadFileType);
  33. // 父目录不存在,则需要先创建
  34. if (!uploadFileSave.getParentFile().exists()) {
  35. boolean createDirResult = uploadFileSave.getParentFile().mkdirs();
  36. if (!createDirResult) {
  37. // 创建父目录失败,后续肯定也无法保存文件
  38. result.put("status",0);
  39. result.put("msg","无法创建上传文件缓存目录!");
  40. return result;
  41. }
  42. }
  43. try {
  44. // 转存文件到上传文件路径/userId/fileName
  45. multipartFile.transferTo(uploadFileSave);
  46. // 文件操作自己处理
  47. // TODO
  48. } catch (Exception e) {
  49. // 上传出现存储问题,直接返回
  50. result.put("status",0);
  51. result.put("msg","上传文件出现异常!" + e.toString());
  52. return result;
  53. }
  54. }
  55. // 完成上传
  56. result.put("status",1);
  57. result.put("msg","完成上传!");
  58. return result;
  59. }

summer.upload()(Cordova transfer实现)

上传文件

注意:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)

Android需申请的权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE

语法:

  1. summer.upload(json,sFn,eFn,headers);

参数:

  • json
    • fileURL:需要上传的文件路径地址(本机路径,常见情景为拍照和相册返回的路径)
    • type:上传文件的类型 > 例:图片为”image/jpeg”
    • params:上传参数
    • SERVER:服务器地址
  • sFn:成功的回调函数
  • eFn:失败的回调函数
  • headers:类型:JSON 对象,默认值:无,描述:(可选项)请求头

注意事项:
必须先选择cordova-plugin-file-transfer插件

示例:

  1. summer.upload({
  2. fileURL : "",
  3. type : "image/jpeg",
  4. params : {
  5. a : 1
  6. },
  7. SERVER : "http://***"
  8. },function (ret){
  9. alert("成功"+ JSON.parse(ret));
  10. },function(err){
  11. alert("失败"+ JSON.parse(err));
  12. },headers);

服务器代码样例:

  1. @RequestMapping(value = "/upload", method = RequestMethod.POST)
  2. @ResponseBody
  3. public Map<String,Object> uploadFiles(HttpServletRequest request) {
  4. Map<String,Object> result = new HashMap<String,Object>();
  5. // 获取前台传递的userId参数
  6. String userId = request.getParameter("userId");
  7. // 文件上传处理类
  8. MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
  9. // 这里循环处理上传的文件(此处是单文件上传,不用循环)
  10. for (Iterator<String> it = multiRequest.getFileNames(); it.hasNext(); ) {
  11. // 上传文件列表的key信息
  12. String fileKey = it.next();
  13. // 获取上传的文件信息
  14. MultipartFile multipartFile = multiRequest.getFile(fileKey);
  15. // 判断文件是否为空
  16. String sourceFileName = multipartFile.getOriginalFilename();
  17. if (sourceFileName == null || sourceFileName.length() == 0) {
  18. // 获取到文件为空,这里不允许上传空文件
  19. result.put("status",0);
  20. result.put("msg","上传文件为空!");
  21. return result;
  22. }
  23. // 上传文件名称
  24. String uploadFileName = sourceFileName.substring(0, sourceFileName.lastIndexOf("."));
  25. // 上传文件类型
  26. String uploadFileType = sourceFileName.substring(sourceFileName.lastIndexOf("."));
  27. // 上传文件时间
  28. long uploadTime = System.currentTimeMillis();
  29. // 保存的文件名称(这里设置为上传的文件名_时间戳)
  30. String tempFileName = uploadFileName + "_" + uploadTime;
  31. // 获取用户上传路径 /home/littlemod/upload/userId/uploadTime/fileName
  32. File uploadFileSave = new File("/home/littlemod/temp" + File.separator + userId + File.separator + uploadTime + File.separator + tempFileName + uploadFileType);
  33. // 父目录不存在,则需要先创建
  34. if (!uploadFileSave.getParentFile().exists()) {
  35. boolean createDirResult = uploadFileSave.getParentFile().mkdirs();
  36. if (!createDirResult) {
  37. // 创建父目录失败,后续肯定也无法保存文件
  38. result.put("status",0);
  39. result.put("msg","无法创建上传文件缓存目录!");
  40. return result;
  41. }
  42. }
  43. try {
  44. // 转存文件到上传文件路径/userId/fileName
  45. multipartFile.transferTo(uploadFileSave);
  46. // 文件操作自己处理
  47. // TODO
  48. } catch (Exception e) {
  49. // 上传出现存储问题,直接返回
  50. result.put("status",0);
  51. result.put("msg","上传文件出现异常!" + e.toString());
  52. return result;
  53. }
  54. }
  55. // 完成上传
  56. result.put("status",1);
  57. result.put("msg","完成上传!");
  58. return result;
  59. }

summer.download()

下载文件

注意:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)

Android需申请的权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE

语法:

  1. summer.download(json);

参数:

  • json
    • url:下载文件的url
    • locate:下载后文件存放的路径
    • filename:下载后重命名的文件名
    • override:下载后是否覆盖同名文件(true和false)
    • callback:下载完成之后的回调函数

示例:

  1. summer.download({
  2. "url" : "http://xxx/xxx/xxx.png",
  3. "locate" : "download/image",
  4. "filename" : "newfile.png",
  5. "override" : "true",
  6. "callback" : "downloadCallBack()"
  7. })
  8. function downloadCallBack(args){
  9. if(args.isfinish){
  10. alert("下载成功"); //多次回调,用于进度条提示
  11. }
  12. }

返回值

  1. {
  2. "isfinish":true,
  3. "savePath":"/data/user/0/com.yonyou.summertest/files/download/image/test.jpg",
  4. "filename":"test.jpg",
  5. "url":"http://img.zcool.cn/community/1.jpg",
  6. "filepath":"download/image",
  7. "path":"/data/user/0/com.yonyou.summertest/files/download/image/1.jpg"
  8. }

summer.compressImage()

压缩图片

注意:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)

Android需申请的权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE

语法

  1. summer.compressImage({
  2. "src": "",
  3. "path": "",
  4. "compressWidth": "",
  5. "compressHeight": "",
  6. "quality": "",
  7. "callback": function(arg) {
  8. }
  9. })

参数:

  • src:待压缩图片的路径
  • path:压缩完图片保存的路径,该参数可选
  • compressWidth:图片压缩的宽度
  • compressHeight:图片压缩的高度
  • quality:图片压缩的清晰度,取值范围:0~1,如:0.8表示按照图片的质量的80%进行压缩。
  • callback:压缩完成之后的回调函数

示例代码

  1. summer.openCamera({
  2. "callback" : function(args){
  3. //压缩图片
  4. summer.compressImage({
  5. "src": args.imgPath,
  6. "path": "",
  7. "compressWidth": "1000",
  8. "compressHeight": "1000",
  9. "quality": "0.8",
  10. "callback": function(arg) {
  11. alert("图片压缩路径:"+arg.savepath);
  12. }
  13. });
  14. }
  15. });

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

语法

  1. summer.fileToBase64({
  2. "filePath" : "", //文件路径
  3. "callback" : function(ret){
  4. }
  5. })

参数:

  • filePath:文件路径
  • callback:异步回调方法

返回值:

  • result:base64串

示例代码:

  1. summer.fileToBase64({
  2. "filePath" : "image/IUAP_45672.jpg",
  3. "callback" : function(ret){
  4. $summer.alert(ret.result);
  5. }
  6. })

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

语法

  1. summer.base64ToFile({
  2. "base64" : "", //base64串
  3. "filePath" : "", //文件路径
  4. "callback" : function(ret){
  5. }
  6. })

参数:

  • base64:base64串
  • filePath:文件路径
  • callback:异步回调方法

返回值:

  • result:返回文件存储的路径值

示例代码:

  1. summer.base64ToFile({
  2. "base64" : "",
  3. "filePath" : "image/IUAP_45672.jpg",
  4. "callback" : function(ret){
  5. $summer.alert(ret.result);
  6. }
  7. })

summer.saveImageToAlbum()

保存图片到相册

注意:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)

Android需申请的权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE

语法

  1. summer.saveImageToAlbum({
  2. "override" : true, //覆盖图片,仅Android生效
  3. "path": "", //源图片本地路径,如果是网络图片需要先调用download下载
  4. "albumTitle": "", //相册名称
  5. "callback": function(arg) {
  6. }
  7. })

参数:

  • override : 为true为覆盖图片,仅Android生效,可选
  • path:本地图片路径,如果是网络图片需要先调用download下载
  • albumTitle:相册名称,可选
  • callback:保存完成之后的回调函数

示例代码

  1. summer.saveImageToAlbum({
  2. "path": "xxx/xxx.png", //本地图片路径,如果是网络图片需要先调用download下载
  3. "albumTitle": "风景", //相册名称
  4. "callback" : function(args){
  5. $summer.alert(args);
  6. }
  7. });

summer.doodle()

对图片进行涂鸦

注意:Android 6以上版本使用此API时需要手动申请权限,权限申请参考 Summer API -> 应用管理 -> 应用权限 下的 API summer.getPermission()(仅Android)

Android需申请的权限:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE

语法

  1. summer.doodle({
  2. "src": "要进行涂鸦的图片", //源图片本地路径,如果是网络图片需要先调用download下载
  3. "callback": "doodleSuccess()", //正确回调
  4. "error": "doodleError()" //错误回调
  5. })

参数:

  • src:本地图片路径,如果是网络图片需要先调用download下载
  • callback:正确回调
  • error:错误回调

示例代码

  1. summer.doodle({
  2. "src": "xxx/xxx.png",
  3. "callback": "doodleSuccess()",
  4. "error" : "doodleError()"
  5. });
  6. function doodleSuccess(args){
  7. $summer.alert(args.out) //args.out为涂鸦图片保存后的图片路径
  8. }
  9. function doodleError(args){
  10. $summer.alert(args)
  11. }
文档更新时间: 2018-05-15 15:28