目录
文件管理
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)
@ResponseBody
public 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/fileName
File 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/fileName
multipartFile.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)
@ResponseBody
public 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/fileName
File 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/fileName
multipartFile.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)
}