3

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を見ると、おそらくマルチパート アップロードを使用したいようです。Googleドライブへのマルチパートアップロードを行うGoコードの例はありますか? 利用可能なアルファ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 に答える