使用REST Api将文件上载到特定的folderid

时间:2016-07-06 14:49:19

标签: google-api google-drive-api

我搜索了google drive api中的所有文档,但我无法找到如何使用REST APi将文件上传到folderid。有人可以帮我这个吗?

   public void UploadFiletoDrive()
    {
        var gmodel = GetAccessToken();
        WebRequest request = WebRequest.Create("https://www.googleapis.com/upload/drive/v3/files/?uploadType=media");
        request.Method = "POST";
        request.Headers["Authorization"] = "Bearer " + gmodel.access_token;
        request.ContentType = "image/jpeg";
        Stream dataStream = request.GetRequestStream();
        FileStream filestream = new FileStream(@"C:\Users\Developer\Downloads\unnamed (2).jpg", FileMode.Open, FileAccess.Read);
        byte[] buffer = new byte[4096];
        int bytesRead = 0;
        while ((bytesRead = filestream.Read(buffer, 0, buffer.Length)) != 0)
        {
            dataStream.Write(buffer, 0, bytesRead);
        }
        filestream.Close();
        dataStream.Close();
        WebResponse response = request.GetResponse();
        StreamReader reader = new StreamReader(response.GetResponseStream());
        string responseFromServer = reader.ReadToEnd();
        reader.Close();
        response.Close();
    }

3 个答案:

答案 0 :(得分:1)

您的示例代码正在进行媒体上传,即。没有元数据,您应该使用分段上传,这样您就可以指定父文件夹ID和内容等元数据。

答案 1 :(得分:0)

您似乎错过了Work with Folders文档。

使用Java在文件夹中插入文件:

String folderId = "0BwwA4oUTeiV1TGRPeTVjaWRDY1E";
File fileMetadata = new File();
fileMetadata.setName("photo.jpg");
fileMetadata.setParents(Collections.singletonList(folderId));
java.io.File filePath = new java.io.File("files/photo.jpg");
FileContent mediaContent = new FileContent("image/jpeg", filePath);
File file = driveService.files().create(fileMetadata, mediaContent)
        .setFields("id, parents")
        .execute();
System.out.println("File ID: " + file.getId());

其他语言的实现也包括在内,如PHP,Python,NodeJS。

另外,请检查此SO thread以获取更多参考。

body.setParents(Arrays.asList(new ParentReference().setId(folderId)));

答案 2 :(得分:0)

使用REST API将文件上传到Google云端硬盘包含以下步骤。

  • 使用列表API获取父文件夹ID

  • 使用create api创建带有parent =“folder ID”的文件,并在响应中获取“fileId”

  • 将文件上传到“fileId

以下是使用REST API上传文件的javascript代码

const url = 'https://www.googleapis.com/upload/drive/v3/files/' + fileId + '?uploadType=media';
if(self.fetch){
        // console.log("Fetch found, Using fetch");
        var setHeaders = new Headers();
        setHeaders.append('Authorization', 'Bearer ' + authToken.access_token);
        setHeaders.append('Content-Type', mime);
        var setOptions = {
        method: 'PATCH',
        headers: setHeaders,
        body: blob
        };
        fetch(url,setOptions)
        .then(response => { if(response.ok){
            // console.log("save to google using fetch");
        }
                    else{
                    // console.log("Response wast not ok");
                    }
                  })
        .catch(error => {
        // console.log("There is an error " + error.message);
        });
        }