从手机上的OneDrive选择文件-移动网站

8

编辑 - 标题之前是

OneDrive Web picker SDK(Javascript)无法在移动设备上选择/打开文件

来自SO的自动电子邮件建议我更改标题,因为悬赏期已过。

我根据这些说明在移动友好网站中创建了一个OneDrive picker https://dev.onedrive.com/sdk/javascript-picker-saver.htm ,在Windows桌面上运行良好。

然而,在移动浏览器(Android浏览器和Android 4.2上的Chrome以及iOS 7上的Safari)上,选择文件后“打开”按钮仍然处于禁用状态。我可以登录并查看文件,但无法选择文件。

编辑,仅澄清:我不想将文件上传到OneDrive。我想挑选已经存在于我的OneDrive帐户中的文件,并将其URL传回页面。以便我可以发送该URL到我的服务器,并让服务器获取该文件

如果我长按所选文件,会出现内容(通过这种方式,就像在Windows中右键单击菜单)菜单,其中包含“打开”选项-选择此选项似乎只会使Onedrive重新加载。

我的代码是:

<script type="text/javascript" src="https://js.live.net/v5.0/OneDrive.js" id="onedrive-js" client-id="0000000011111111"></script>

    <script type="text/javascript">
        var pickerOptions = {
        success: function(files) {
        console.log(files);
        document.getElementById("cloud_cv_source_input").value = "onedrive" ;
        document.getElementById("cloud_cv_file_url_input").value = files.values[0].link ;                
        document.getElementById("cloud_cv_file_name_input").value = files.values[0].fileName;
        document.getElementById("cloud_cv_file_size_input").value = files.values[0].size;

  },

  cancel: function() {
      // handle when the user cancels picking a file
  },

  linkType: "downloadLink", // or "downloadLink",
  multiSelect: false // or true
}

    function launchOneDrive()
        {
        OneDrive.open(pickerOptions);
        }


    </script>

我在文档末尾看到了这个:

The OneDrive picker and saver supports the following web browsers:

    Internet Explorer 9+
    Latest version of Chrome
    Latest version of Firefox
    Latest version of Safari

假设这个SDK只适用于桌面站点,这正确吗?如果是的话,那么我应该为移动站点使用什么?我知道有针对Android和iOS的SDK,但我不会制作本地应用程序。

谢谢。


“移动网站应该使用什么?”很抱歉,如果SDK与移动设备不兼容,我真的认为你无法做到这一点... - n00dl3
首先,我要说移动设备上不可能实现这个功能。选择/打开文件需要操作系统本身提供的本地文件管理器工具。由于iOS或Android没有这个功能,您是否考虑使用“替代”解决方案。例如,通过共享栏触发移动设备选择一个项目? - Stephen Rodriguez
Junius Rendel / Stephn_R - 感谢您的回复。我确实明白,无论是故意还是错误地,我正在使用的SDK在手机上无法工作。但是,我已经成功地让Google Drive和Dropbox的类似SDK工作了。由于它们是OneDrive的竞争对手,我希望微软也能为移动Web提供支持,因此我可以假设我做错了什么,或者使用了错误的SDK。此外,一个类似我的网站的网站允许我在手机上选择OneDrive文件。 - KevInSol
1
Stephn_R - 我认为你误解了问题 - OneDrive选择器不会浏览设备 - 它浏览OneDrive帐户 - 从“云”中选择文件。 - KevInSol
1个回答

0

我花了一些时间研究这个问题并进行了一些测试。由于没有您的应用程序在线上提供 URL(以便我可以在服务器上直接测试),以下是我的初步想法:

这个程序能在移动设备上运行吗?理论上,如果用户使用支持的设备在移动设备上浏览网页,它应该可以。但是当我尝试查看您提供的 OneDrive 开发中心的参考 URI 到 JS Web Picker SDK 时...页面不会显示让我使用 Chrome、Firefox 或者我妻子的 iPhone 中的 Safari 来选择内部文件的示例。显然,微软选择不在他们声称支持的浏览器的移动版本上测试文档页面代码。

您可能希望在执行代码周围添加一个合理性检查(以确保响应中有可用的文件)。此外,我在文档代码中看到它们正在清除选择器的结果(用于查看和保存)。如果您有一个我可以测试您的代码的 URI,我将很乐意在此方面提供更多帮助。

<script type="text/javascript" src="https://js.live.net/v5.0/OneDrive.js" id="onedrive-js" client-id="0000000011111111"></script>
<script type="text/javascript">
var pickerOptions = {
    success: function(file) {
        // Sanity check
        if( !file  ) {
            // Handle no file being returned
        } else {
            var f = file.values[0];
            document.getElementById("cloud_cv_source_input").value = "onedrive" ;
            document.getElementById("cloud_cv_file_url_input").value = f.link ;                
            document.getElementById("cloud_cv_file_name_input").value = f.fileName;
            document.getElementById("cloud_cv_file_size_input").value = f.size;
        } // end if
    },
    cancel: function() {
        // handle when the user cancels picking a file
    },
    linkType: "downloadLink",
    multiSelect: false
}

function launchOneDrive() {
    OneDrive.open(pickerOptions);
}
</script>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接