0

フォームを使用せずに、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)

今の問題は、ローカルファイルを取得する方法が本当にわからないことです

4

1 に答える 1

2

アプリケーション自体からローカルファイルシステムから読み取ることはできません。ファイルをアプリに送信するには、httpPOSTを使用する必要があります。

これは別のアプリケーション内から確実に行うことができます。ファイルの内容を含むmimeマルチパートメッセージを作成してアプリにPOSTするだけで、送信アプリケーションは、アプリに手動で投稿するhttpリクエストを作成するだけで済みます。c#を使用してmimemulitpartメッセージを作成する方法を読んでおく必要があります。

于 2012-06-18T01:17:00.937 に答える