当前位置: 首页 > 知识库问答 >
问题:

找不到我使用google drive sdk上传到google drive的文件

钦侯林
2023-03-14
    private string privKey = "-----BEGIN PRIVATE KEY-----\MYKEYHERE-----END PRIVATE KEY-----\n";

    private string[] scopes = { DriveService.Scope.Drive };
    string serviceAccountEmail = "<myaccounthere>";

    public File uploadToDrive(string uploadFilePath)
    {
        ServiceAccountCredential credential = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(serviceAccountEmail)
        {
            Scopes = scopes
        }.FromPrivateKey(privKey));

        BaseClientService.Initializer initializer = new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
        };

        // Create Drive API service.
        var service = new DriveService(initializer);

        if (!string.IsNullOrEmpty(uploadFilePath))
        {
            File fileMetadata = new File();
            fileMetadata.Name = System.IO.Path.GetFileName(uploadFilePath);
            fileMetadata.MimeType = GetMimeType(uploadFilePath);

            try
            {
                System.IO.FileStream uploadStream = new System.IO.FileStream(uploadFilePath, System.IO.FileMode.Open, System.IO.FileAccess.Read);
                FilesResource.CreateMediaUpload request = service.Files.Create(fileMetadata, uploadStream, GetMimeType(uploadFilePath));
                request.ProgressChanged += Upload_ProgressChanged;
                request.ResponseReceived += UploadRequest_ResponseReceived;

                var task = request.UploadAsync();
                task.ContinueWith(t =>
                {

                });
                return request.ResponseBody;


            }
            catch (System.IO.IOException iox)
            {
                return null;
            }
            catch (Exception e) 
            {
                //Log
                return null;
            }
        }
        else
        {
            //Log file does not exist
            return null;
        }
    }

    private string GetMimeType(string fileName)
    {
        string mimeType = "application/unknown";

        string ext = System.IO.Path.GetExtension(fileName).ToLower();

        Microsoft.Win32.RegistryKey regKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(ext);

        if (regKey != null && regKey.GetValue("Content Type") != null)
            mimeType = regKey.GetValue("Content Type").ToString();

        return mimeType;
    }

    private void Upload_ProgressChanged(IUploadProgress progress)
    {
        Debug.WriteLine(progress.Status + " " + progress.BytesSent);
    }

    private void UploadRequest_ResponseReceived(Google.Apis.Drive.v3.Data.File file)
    {
        Debug.WriteLine(file.Name + " was uploaded successfully");
    }

共有1个答案

慕阳平
2023-03-14

如果这不起作用,您可以尝试以下相关SO问题中的建议答案:

由于您使用的是服务帐户,所有文件夹和文件都将在此服务帐户的驱动器中创建,该驱动器无法通过web UI访问,并且将被限制在默认配额范围内。

要在用户的驱动器中添加内容,您需要通过常规的OAuth2.0流程从该用户检索凭据。您可以在以下页面上找到更多关于OAuth2.0的信息:

    null
 类似资料:
  • 我正在开发一个android应用程序,我试图将谷歌驱动器集成到我的应用程序中。该程序是允许同步,所以它在SD卡上创建一个文件,然后这个文件被上传到谷歌驱动器上。我成功地进行了身份验证,但是当我使用函数上传时,我得到一个NullPointerException,并且我看不到值在哪里是null,因为当我遍历所有内容时,似乎没有任何内容是null。 下面是我用来执行上传的代码。 以下是我如何获得驱动器服

  • 我想添加时间字符串的文件名,我上传到谷歌驱动器使用pydrive的结束。基本上,我尝试编写以下代码,但我不知道如何适应新的文件变量: 获取类型错误:应为str、字节或os。类路径对象,而不是GoogleDriveFile

  • 问题内容: 我正在尝试打开一个保存在源文件夹本身中的CSV文件名“ logger.csv”。 但是,这一直在给我一个“找不到文件”错误。 问题答案: 如果您现在就使用相对路径,则该文件需要存在于项目根目录中, 而不是 存在于java文件的目录中。 考虑以下层次结构: 不管用。 将 现在 的工作。(注意,该文件与src目录相邻。)

  • 这是我得到的错误: Java语言io。FileNotFoundException:C:\Users\Owner\AppData\Roaming\NetBeans\7.3.1\config\GF3\domain1\generated\jsp\uploadRamki\data\images。jpg(系统找不到指定的路径) 这是我的后盾豆:

  • 我试图创建一个nodejs应用程序,可以准备我的GoogleDrive文件。我不想要一个每个人都可以使用的应用程序,它只是特定于我的谷歌驱动。 我在控制台中为GoogleDrive创建了一个api密钥,没有任何限制。 这是我正在做的电话:https://www.googleapis.com/drive/v3/files?pageSize=10 当使用这个键我得到这个错误: 这在谷歌硬盘上可能吗?

  • 问题内容: 我正在使用来自PHP Letter的ajax文件上传插件,并且正在使用jQuery 1.6.2,这些文件可以正确上传,但是当我检查javascript错误时,我无法使用从php脚本返回的JSON数据,但我遇到了这个错误, “未捕获的TypeError:对象函数(a,b){返回新的e.fn.init(a,b,h)}没有方法’handleError’” 在铬和 “ jQuery.handl