フォームを使用せずに、Googleアプリのblobstoreにファイルをアップロードしようとしています。しかし、アプリにローカルファイルを読み取らせる方法に固執しています。私はPythonとGoogleAppsにかなり慣れていませんが、カットアンドペーストした後、次のようになりました。
import webapp2
import urllib
import os
from google.appengine.api import files
from poster.encode import multipart_encode
class Upload(webapp2.RequestHandler):
def get(self):
# Create the file in blobstore
file_name = files.blobstore.create(mime_type='application/octet-stream')
# Get the local file path from an url param
file_path = self.request.get('file')
# Read the file
file = open(file_path, "rb")
datagen, headers = multipart_encode({"file": file})
data = str().join(datagen) # this is supposedly memory intense and slow
# Open the blobstore file and write to it
with files.open(file_name, 'a') as f:
f.write(data)
# Finalize the file. Do this before attempting to read it.
files.finalize(file_name)
# Get the file's blob key
blob_key = files.blobstore.get_blob_key(file_name)
今の問題は、ローカルファイルを取得する方法が本当にわからないことです