【问题标题】:Select a file from OneDrive on phone - mobile web site在手机上从 OneDrive 中选择文件 - 移动网站
【发布时间】:2015-06-02 15:22:11
【问题描述】:

编辑 - 以前的标题

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

来自 SO 的自动电子邮件建议我在赏金期到期时更改标题。

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

但是在移动浏览器(Android 4.2 上的 Android 浏览器和 Chrome,以及 iOS 7 上的 Safari)上,选择器启动并让我登录 OK,我可以看到文件,但是当我点击选择文件时,“打开”按钮保持禁用状态。

编辑,只是为了澄清:我不想将文件上传到 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 与移动设备不兼容,我真的认为您将无法做到这一点......
  • 最初,我想说这在移动设备上是不可能的。选择/打开文件需要操作系统本身提供的本机文件管理器工具。由于 iOS 或 Android 没有此功能,您是否考虑过使用“替代”解决方案。例如,也许通过分享栏触发移动设备选择项目?
  • Junius Rendel / Stephn_R - 感谢您的回复。我确实明白,无论是有意还是无意,我正在使用的 SDK 在手机上都不起作用。但是,我有类似的用于 Google Drive 和 Dropbox 的 SDK。由于这些是 OneDrive 的竞争对手,我希望微软也能迎合移动网络,所以我可以假设我做错了什么,或者使用了错误的 SDK。此外,与我类似的网站允许我在手机上选择 OneDrive 文件。
  • Stephn_R - 我认为您误解了这个问题 - OneDrive 选择器不浏览设备 - 它浏览 OneDrive 帐户 - 从“云”中选择文件

标签: javascript mobile onedrive


【解决方案1】:

我花了一些时间研究这个并进行了一些测试,但没有在线应用的 URL(因此我可以直接在服务器上测试它),这是我最初的想法:

这可以在移动设备上使用吗?理论上,如果用户使用支持的设备在他们的移动设备上浏览,它应该可以。但是,当我尝试查看您为 OneDrive 开发中心提供到 JS Web Picker SDK 的参考 URI 时...该页面不会显示让我在我的 Android 上选择文件的示例:Chrome、Firefox 或我妻子的 iPhone苹果浏览器。显然,Micro$oft 选择不在他们声明支持的浏览器的移动版本上测试文档页面代码。

您可能希望围绕执行代码添加完整性检查(以确保响应中的文件可用)。此外,我在文档代码中看到,他们正在清除选择器在取消和选择时的结果(用于查看和保存)。如果您有我可以测试您的代码的 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多