游帝2015
游帝2015
  • 发布:2016-08-17 16:59
  • 更新:2016-08-17 18:08
  • 阅读:7186

关于plus.io中访问手机本地系统文件的问题

分类:MUI

我如果想打开摄像头,访问本地相册一样,点击本地文件按钮,即可弹出手机本地文件的。类似于手机中点击附件那样出现本地文件目录。用plus.iorequestfilesystem不好使啊,请教大神给予解答?

2016-08-17 16:59 负责人:无 分享
已邀请:

最佳回复

赵梦欢

赵梦欢 - 专注前端,乐于分享!

建议使用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

该问题目前已经被锁定, 无法添加新回复