ホームページ  >  記事  >  バックエンド開発  >  Google ドライブからパブリック ファイルをダウンロードしようとすると、Go プログラムが空の zip ファイルをダウンロードするのはなぜですか?

Google ドライブからパブリック ファイルをダウンロードしようとすると、Go プログラムが空の zip ファイルをダウンロードするのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-30 14:16:26398ブラウズ

Why does my Go program download an empty zip file when I try to download a public file from Google Drive?

Golang で Google ドライブから公開ファイルをダウンロードする

Google ドライブから公開共有 zip ファイルをダウンロードしようとすると、空の「ファイル」が表示されるという問題が発生することがあります。 zip」が代わりに作成されます。これは、Google ドライブまたは Go に関連する潜在的なバグが原因です。

問題の根本は、Google ドライブによって提供される最初のダウンロード URL が、アスタリスク (*) 文字を含む 2 番目の URL にリダイレクトされるという事実にあります。区切り文字として。ただし、Go がこの URL を取得しようとすると、アスタリスクを * としてエンコードし、URL を次のように変更します。

https://doc-00-c8-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/8i67l6m6cdojptjuh883mu0qqmtptds1/1376330400000/06448503420061938118/%2A/0B2Q7X-dUtUBebElySVh1ZS1iaTQ?h=16653014193614665626&e=download

残念ながら、Google はこのエンコードされた URL に対して「403 Forbidden」と応答し、* エンコードがはアスタリスクとして正常に解釈されません。

この問題を解決するには:

  1. 正しい URL を取得します: Web ブラウザまたは cURL などのツールを使用して、最初に提供されたダウンロード URL にアクセスし、アスタリスクを含む最終 URL に到達するまでリダイレクトに従います。
https://doc-00-c8-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/8i67l6m6cdojptjuh883mu0qqmtptds1/1376330400000/06448503420061938118/*/0B2Q7X-dUtUBebElySVh1ZS1iaTQ?h=16653014193614665626&e=download
  1. アスタリスクを手動でエンコードします: パーセントエンコーディングを使用して、修正された URL 内のアスタリスク (*) 文字を手動でエンコードします。これにより、次の URL が生成されます:
https://doc-00-c8-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/8i67l6m6cdojptjuh883mu0qqmtptds1/1376330400000/06448503420061938118/%2A/0B2Q7X-dUtUBebElySVh1ZS1iaTQ?h=16653014193614665626&e=download
  1. 修正された URL を使用します: 手動でエンコードされた URL を使用するように Go コードを更新します。これにより、Google ドライブから zip ファイルを正常にダウンロードできるようになります。

以上がGoogle ドライブからパブリック ファイルをダウンロードしようとすると、Go プログラムが空の zip ファイルをダウンロードするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。