3

我正在使用google-api-go-client尝试将文件上传到 Google Drive。我的代码看起来与库中的示例代码非常相似:

goFile, err := os.Open(file_to_upload)
if err != nil {
  log.Fatalf("error opening file: %v", err)
}

file_meta := &drive.File{Title: filepath.Base(file_to_upload)}
_, err = service.Files.Insert(file_meta).Media(goFile).Ocr(true).Do()
if err != nil {
  panic(err)
}

这适用于我尝试过的大多数文件,但是对于 5.1M 文件,我一直收到 500 错误。我认为这可能是由于文件较大而我测试过的其他文件较小。我试过的最大的成功文件是 3.8M。

查看Google Files SDK,似乎我可能想使用分段上传。有没有人有任何示例 Go 代码可以将分段上传到 Google Drive?甚至可以使用可用的 alpha api。

4

1 回答 1

1

这条线上的东西应该可以工作

// import mime/multipart  
//import path , net/http, bytes
uri := "https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart"
body := &bytes.Buffer{}
w := multipart.NewWriter(body)
part, _:= w.CreateFormFile(fieldName, path.Base(fileName))
contentType := w.FormDataContentType()
_ = w.Close()
req, _ := http.NewRequest("POST", uri, body)
req.Header.Add("Content-Type", contentType)
于 2014-12-09T06:40:47.837 回答