通过Golang API将大文件上传到Google云端硬盘

时间:2013-12-31 02:14:55

标签: go google-drive-api multipart

我正在使用google-api-go-client尝试将文件上传到Google云端硬盘。我的代码看起来非常类似于库中的示例代码:

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云端硬盘?甚至可以使用alpha api。

1 个答案:

答案 0 :(得分: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)