javascript - Google Picker => 如何下载文件

标签 javascript c#-4.0 google-picker

如果重要的话,C# 在这里。我想要做的是允许手机(或台式机)用户将文件上传到我的网络服务器。我已经构建了选择器,得到了范围 drive.readonly 的所有授权。

但是当下载文件时,我一直在示例中看到的是,他们使用 Javascript 下载文件,然后再次将其上传到服务器。我想从我的服务器上获取它。我在 Dropbox 上运行良好,但谷歌是个问题。

我按照这里的指南操作: https://developers.google.com/picker/docs/

然后我将 fileId 和 token 发送到服务器:

 function pickerCallback(data) {
    if (data.action == google.picker.Action.PICKED) {
        var datastring = "url=" + data.docs[0].url + "&name=" + data.docs[0].name + "&mimetype=" + data.docs[0].mimetype + "&fileId=" + data.docs[0].id + "&token=" + oauthToken;
            $.ajax({
                type: "POST",
                url: "/FileUpload/GetGoogleDriveFile/",
                data: datastring,
                dataType: "json",
                success: function (data) {
                    if (data.success != null && data.success == true) {
                        window.location.href = "@Html.Raw(AfterUploadDestination)";
                    }
                    else
                    {
                        alert("Error: " + data.ErrorMsg);
                    }
                },
                error: function (xhr, textStatus, errorThrown) {
                    console.log(xhr.responseText);
                }
            });


        googlepicker.setVisible(false);
    }
}

然后在服务器上我有类似...

 var client = new System.Net.WebClient();
            client.Headers.Set(HttpRequestHeader.Authorization, "Bearer " + file.token);

然后是使用文件的东西:

doc.Contents = client.DownloadData(string.Format("https://www.googleapis.com/drive/v3/files/{0}?alt=media", file.fileId));

问题是该文件不仅仅是文件的二进制流,而是当您使用该链接访问该网站时,谷歌显示的网页本身。

我究竟该如何下载文件?

提前致谢,我希望这篇文章不会太长以至于没有人阅读。

最佳答案

你可以查看这个documentation关于如何使用 Google Picker API 打开文件。当用户从列表中选择一个文件时,文件 ID 将被返回,您的应用可以使用该 ID 来访问该文件。在打开文件时从选取器获取文件 ID 后,应用程序可以获取文件元数据并下载文件内容,如 files.get 的引用文档中所述。 .

关于javascript - Google Picker => 如何下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45271963/

相关文章:

c# - 实现通用方法

asp.net - Json.Net 如何将 null 反序列化为空字符串?

javascript - 无法使用 Google App 脚本打开 FilePicker

javascript - 为什么只有 setDeleteAction 和 setUpdateAction?

javascript - 如何在 Angular 2+ 中将滚动元素制作成视口(viewport)?

c# - 如何根据 DataAnnotation 中的另一个属性验证一个属性

youtube - Google Picker API:过滤YouTube电影

google-drive-api - 对子文件的 Google Drive API 权限

Javascript 迭代一组属性

javascript - 使用 Javascript UDF 计算 IRR 时出错