3

現在、PyDrive を使用してバックアップ (.tar ファイル) を Google ドライブにアップロードしています。

巨大なファイル (約 5 GB) を Google ドライブにアップロードするために、このライブラリを使用する特別なことはありますか。Google Drive API のドキュメントでは、Resumable upload ? https://developers.google.com/drive/web/manage-uploads

私の問題は、巨大なファイルを送信しようとすると、スクリプトがエラーなしで非常に迅速に実行され、ファイルが GoogleDrive に表示されないことです。ただし、100MB程度の小さなファイルでこれを行うと、すべてが完全に正常に機能します...

私のコードは次のとおりです。

def upload(self, backupFile, backupFileName):

    json_data=open(os.path.join(__location__, 'client_secrets.json'))

    data = json.load(json_data)

    """Email of the Service Account"""
    SERVICE_ACCOUNT_EMAIL = data['client_email']

    """Path to the Service Account's Private Key file"""
    SERVICE_ACCOUNT_PKCS12_FILE_PATH = os.path.join(__location__, 'key.p12')

    f = file(SERVICE_ACCOUNT_PKCS12_FILE_PATH, 'rb')
    key = f.read()
    f.close()

    credentials = SignedJwtAssertionCredentials(SERVICE_ACCOUNT_EMAIL, key,
        scope='https://www.googleapis.com/auth/drive', sub='email')
    http = httplib2.Http()
    credentials.authorize(http)

    gauth = GoogleAuth()
    gauth.credentials = credentials

    drive = GoogleDrive(gauth)

    file1 = drive.CreateFile({'title': backupFileName, "parents" : [{"id":"0B7FoN03AUUdZVlNETEtWLS1VTzQ"}]} )  # Create GoogleDriveFile instance with title 'Hello.txt'

    file1.SetContentFile(backupFile);
    file1.Upload()

大きなファイルを送信しようとしても、エラーはまったく返されません。Pythonスクリプトは何も表示されずに終了します...

4

2 に答える 2

1

一部の種類のファイルには 100MB の制限があります

https://support.google.com/drive/answer/37603?hl=ja

サイズ制限

ドキュメント: ページ数やフォント サイズに関係なく、1,024,000 文字。新しいバージョンのドライブ (左側に赤い [新規] ボタンがある) を使用している場合、Google ドキュメント形式に変換されたドキュメント ファイルのアップロードは 50 MB を超えることはできません。以前のバージョンのドライブを使用している場合、10 MB を超えるドキュメント ファイルは変換できません。

スプレッドシート: 400,000 セル、シートあたり最大 256 列。Google スプレッドシート形式に変換されるアップロード済みスプレッドシート ファイルは、100 MB を超えることはできず、1 シートあたり 400,000 セルおよび 256 列未満である必要があります。

スプレッドシートのサイズ制限に関する詳細情報 上記のスプレッドシートの制限はすべて、Google スプレッドシートの新しいバージョンでは削除されています。新しいバージョンの Google スプレッドシートは 200 万セルのデータをサポートする必要がありますが、スプレッドシートが非常に大きいとパフォーマンスが低下する可能性があることに注意してください。新しいバージョンの Google スプレッドシートへの切り替えについて詳しくは、こちらをご覧ください。プレゼンテーション: Google スライドで作成されたプレゼンテーションは最大 100 MB です。Google スライドに変換されるアップロードされたプレゼンテーション ファイルも最大 50 MB です。

図面: 大きすぎる図面を作成する人を見たことがありません (しかし、それはあえてではありません)。

その他のファイル: アップロードするが、Google ドキュメント、スプレッドシート、またはスライド形式に変換しないファイルは、それぞれ最大 5 TB です。

Google ドライブ、Gmail、Google+ フォトでは、すべてのユーザーに 15 GB の無料の保存容量が与えられ、追加の保存容量を購入することもできます。

于 2014-12-04T20:41:35.663 に答える
0

ファイルのようなオブジェクトを GoogleDriveFile の .content に渡すことで、任意のサイズをアップロードできます

file1.content=fileobj

私の経験から、最初に 8192 バイトを読み取り、最初に 0,2 をシークし、次に 0,0 をシークし、すべての read(8192) の前に tell() を呼び出し、seek(0,2) で read(8192) も呼び出します。 +1

そのため、read()、tell()、seek() メソッドをオブジェクトに配置する必要があります。これは、おそらく API の http.py 部分からのものです。

于 2019-07-31T19:48:00.443 に答える