我如果想打开摄像头,访问本地相册一样,点击本地文件按钮,即可弹出手机本地文件的。类似于手机中点击附件那样出现本地文件目录。用plus.iorequestfilesystem不好使啊,请教大神给予解答?
游帝2015
- 发布:2016-08-17 16:59
- 更新:2016-08-17 18:08
- 阅读:7521
最佳回复
赵梦欢 - 专注前端,乐于分享!
建议使用h5 input type=file标签,详细查看这篇文章:
JavaScript进阶学习(三)—— 基于html5 File API的文件操作
如果想要调用原生文件管理系统,可以使用nativejs去写,这里给出一个android的作为参考:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
#btn{
display: block;
width: 90%;
height: 50px;
margin: 0px auto;
}
</style>
</head>
<body>
<button id="btn" type="button" class="mui-btn mui-btn-blue mui-btn-block">按钮</button>
<script type="text/javascript">
document.querySelector('#btn').addEventListener('click',function () {
var REQUESTCODE = 1;
var main = plus.android.runtimeMainActivity();
var Intent = plus.android.importClass('android.content.Intent');
var intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");//设置类型,任意类型
//intent.setType("image/*");
//intent.setType("audio/*"); //选择音频
//intent.setType("video/*"); //选择视频 (mp4 3gp 是android支持的视频格式)
intent.addCategory(Intent.CATEGORY_OPENABLE);
main.startActivityForResult(intent,REQUESTCODE);
main.onActivityResult = function(requestCode, resultCode, data) {
if (REQUESTCODE == requestCode) {
var context = main;
plus.android.importClass(data);
// 获得文件路径
var fileData = data.getData();
var path = plus.android.invoke(fileData, "getPath");
console.log("path:"+path);
// 判断文件类型
var resolver = context.getContentResolver();
var fileType = plus.android.invoke(resolver, "getType",fileData);
console.log("fileType:"+fileType);
}
}
})
</script>
</body>
</html>
游帝2015 (作者)
可是这个type=file属性在安卓机上兼容性不好。很不好我试了四部手机,只有一部是可以调用本地系统文件。
2016-08-17 17:22
游帝2015 (作者)
所以我用了plus.io 进行访问本地文件,选择手机本地文件的内容进行上传,可是死活访问不到手机本地文件。
2016-08-17 17:23
赵梦欢
回复 游帝2015:plus.io只能访问应用下固定的几个目录。
2016-08-17 17:24
游帝2015 (作者)
那我也得能访问不是,我写了,可是无法调出手机的本地文件管理,plus.io.requestFileSystem(plus.io.PRIVATE_DOC,function(){},function(){});就这段代码
2016-08-17 17:30
赵梦欢
回复 游帝2015: plus.io.requestFileSystem(plus.io.PRIVATE_DOC,function(){},function(){}); 无法调用手机的本地文件管理界面,需要使用nativejs自己拓展。
2016-08-17 17:35
游帝2015 (作者)
不会吧,nativejs,扩展。怎么拓展有例子吗
2016-08-17 17:36
游帝2015 (作者)
回复 赵梦欢:那为什么摄像头和相册直接可以调出来?
2016-08-17 17:36
赵梦欢
回复 游帝2015:摄像头和相册是专门提供的模块。
2016-08-17 17:42
游帝2015 (作者)
回复 赵梦欢:那访问本地文件功能然后再上传,是plus.io搭配native.js进行实现的吗?
2016-08-17 17:43
游帝2015 (作者)
回复 赵梦欢:那我如果直接复制的话能调出来吗?还是说还要引用native.js
2016-08-17 18:12
赵梦欢
回复 游帝2015:不需要引用,能够调出来,剩下怎么选择完之后怎么操作需要你自己做
2016-08-17 18:15
游帝2015 (作者)
回复 赵梦欢:这个竟然可以直接拿来用?能访问到。
2016-08-17 18:16
游帝2015 (作者)
回复 赵梦欢:也就是说如果我需要选中其中的一个文件上传的话,上传文件这部分直接就调用plus.io.uploader就可以了?uploader这个你们也是维护的? 可是这个例子不是用plus.io加native.js扩展的了?
2016-08-17 18:18
游帝2015 (作者)
回复 赵梦欢:请问昨天那个例子是不是只能在安卓机上使用,苹果机子无法调用?
2016-08-18 13:43
赵梦欢
回复 游帝2015:嗯,是的,ios的需要自己写
2016-08-18 13:46
游帝2015 (作者)
也就是说如果用plus.io搭配nativejs的话就可以做到兼容了呗
2016-08-18 14:06
jtshushu
你们有用MUI框架吗
2018-09-04 17:49
李钊
回复 赵梦欢:调用原生的文件管理系统,如何通过uri获取文件路径及文件名,这个调用了获取的路径是path:/document/video:635382格式的我想调用plus.io.resolveLocalFileSystemURL( "_www/test.html", function( entry ) {}来获取信息但是失败了,是不是你这个返回的文件路径编码了????
2018-11-13 16:10
2***@qq.com
回复 李钊: 你好,请问你获取的这个路径path:/document/video:635382,最后是怎么解决的?
2019-06-12 13:06