使用OneDrive文件选择API上传文件到默认文件夹

3
我们可以使用OneDrive的JavaScript文件选择器API将文件上传到任何默认文件夹,例如文档或公共文件夹吗?
也就是说,可以不使用设置路径的方式:
WL.upload({                           
    path: response.data.folders[0].id,                          
    element: "file",
    overwrite: "rename"
});

我们能否设置默认文件夹(例如文档/公共)的路径值?

2个回答

1

按照https://msdn.microsoft.com/en-us/library/hh550848.aspx上的步骤,您可以完成这项任务。

在您的代码的HTML部分中,添加<input type="file" id="filePicker" /><input type="button" value="Upload" onclick="uploadFile()" />来调用wl.upload函数。以下是我的代码,它将允许用户选择文件并将其上传到OneDrive上的默认文件夹中。在这种情况下,我使用了“me/skydrive/my_documents”。

<!DOCTYPE html>
<html>
    <head>
        <title>JavaScript Code Sample</title>
        <script type="text/javascript" src="//js.live.net/v5.0/wl.js"></script>
    </head>
    <body>
<div style="padding: 1em">


        <div id="signin"></div>
        <label id="info"></label>
    <form>
    <input id="file" name="file" type="file" />
</form>
    <button onclick="uploadFile()">Save file directly (calling WL.upload)</button>
        <script>
            WL.init({
                client_id: 'Your_Client_ID',
                redirect_uri: 'Your_Redirect_URL',
                scope: "wl.signin",
                response_type: "token"
            });
            WL.ui({
                name: "signin",
                element: "signin"
            });
            function uploadFile() {
                WL.login({
                    scope: "wl.skydrive_update"
                }).then(
                    function (response) {
                        WL.upload({
                            path: "me/skydrive/my_documents",
                            element: "file",
                            overwrite: "rename"
                        }).then(
                            function (response) {
                                document.getElementById("info").innerText =
                                    "File uploaded.";
                            },
                            function (responseFailed) {
                                document.getElementById("info").innerText =
                                    "Error uploading file: " + responseFailed.error.message;
                            }
                        );
                    },
                    function (responseFailed) {
                        document.getElementById("info").innerText =
                            "Error signing in: " + responseFailed.error.message;
                    }
                );
            }

        </script> 
    </div>
    </body>
</html> 


0

路径“response.data.folders [0] .id”用于选择用户从OneDrive文件选择器中选择的文件夹,当调用WL.fileDialog时。如果您要上传到默认文件夹,则应省略文件选择器并使用JavaScript API。


我正在使用OneDrive的JavaScript API来上传文件,但是我想设置一个默认文件夹,这样终端用户就不能选择任何文件夹,文件将被上传到一个默认文件夹中。你能否请指导我进一步? - Dipti Sheth
抱歉。在这种情况下,您将希望您的应用程序直接调用WL.upload函数,并指定您想要默认文件夹的路径。在https://msdn.microsoft.com/en-us/library/hh550848.aspx上的示例中,您可以将路径更改为“me/skydrive/my_documents”或任何友好的文件夹名称。您将需要为文件信息创建<input>标记和一个按钮来调用该函数。 - Toan-Nguyen
我更改了路径为“me/skydrive/my_documents”……但它仍然显示用户的OneDrive文件夹结构,显示默认文件夹如Documents、Pictures、Public,带有保存、取消和新建文件夹选项。难道不能直接上传文件到Documents文件夹,而不给选择任何其他文件夹的选项吗? - Dipti Sheth
选择器将始终为用户显示文件夹选项。因此,如果您希望文件被上传到特定文件夹而不给用户选择的选项,则需要直接调用WL.upload函数。 - Toan-Nguyen
请问能否给我一个示例,如何直接调用WL.upload函数而不给用户选择文件夹的选项? - Dipti Sheth

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