1

私はpisaを使用して、ユーザーにレンダリングするPDFドキュメントを作成します。

response = HttpResponse()
pisa.CreatePDF(src=html, dest=response, show_error_as_pdf=True)
return response

response.contentにはpdfが含まれています。私はこれを行うためにdropbox-pythonsdkを使用しました:

dropbox_client.put_file(folder_path, response.content)

response.contentをPDFとして理解し、ファイルを正しくアップロードしているようです

google-drive-python-apiでも同じことをする必要があります。このリファレンス(https://developers.google.com/drive/v2/reference/files/insert)は基本的な方法を示していますが、MediaFileUploadは物理ファイルを探しているようです。MediaIoBaseUploadもありますが、response.contentを受け入れていないようです。私はfile/i / oにあまり詳しくないので、djangoからdropbox、G-Driveまで、すべてをここにリストしました。うまくいけば、私は問題を混乱させませんでした。

4

1 に答える 1

2

apiclient.httpPython Google API ツールキットのファイルには、MediaIoBaseUploadまさに必要なことを行うオブジェクトが含まれています。

ファイル ハンドルまたはファイル ハンドルのように動作するもの (fhパラメーター) を期待するだけです。あなたは幸運です: それはまさにStringIOモジュールの目的です:

import StringIO # You could try importing cStringIO which gives better performance
fh = StringIO.StringIO(response.content)
media = MediaIoBaseUpload(fh, mimetype='some/mimetype')
# See https://developers.google.com/drive/v2/reference/files/insert for the rest

MediaInMemoryUploadもトリックを行いますが、現在は非推奨です。

于 2012-12-16T18:33:08.950 に答える