0

Google appengine は初めてです。ファイルを BLOB として保存するのではなく、ディレクトリにアップロードしたいと考えています。

main.py

import cgi 
import webapp2
from google.appengine.api import users
from google.appengine.ext.webapp.template \
    import render
from os import path

class MainHandler(webapp2.RequestHandler):
    def get(self):
        context={}
        tmpl = path.join(path.dirname(__file__), 'static/html/index.html')
        self.response.out.write(render(tmpl, context))

    def post(self):
       form_data = self.request.get('file')
       file_data = form_data
       f=open('static/html/'+form_data,'w')
       f.write(file_data)
       f.close



routes=[
        (r'/', MainHandler),
        ]   
app = webapp2.WSGIApplication(routes=routes,debug=True)

index.html

> <html>
>     <head><title>test</title></head>
>     <body>hello
>        <form id="addmovieform" action="/" method="post" ENCTYPE="multipart/form-data">
>            <input type="file" name="file" >
>            <input type="submit" name="submit">
>        </form>
>     </body>
>         </html>

エラー

トレースバック (最後の最後の呼び出し): ファイル "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2/webapp2.py"、1536 行、呼び出し rv = self .handle_exception(request, response, e) ファイル "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2/webapp2.py"、1530 行目、呼び出し中 rv = self.router.dispatch(request, response) ファイル "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2/webapp2.py"、1278 行目default_dispatcher return route.handler_adapter(request, response) ファイル "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2/webapp2.py"、1102 行目、呼び出し中 return handler.dispatch() ファイル "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2/webapp2.py"、572 行目、ディスパッチ return self.handle_exception( ( *args, **kwargs) File "/Users/saravase/test/main.py", line 33, in post f=open('static/html/'+form_data,'w') File "/Applications/GoogleAppEngineLauncher. app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", 行 589,初期状態 raise IOError('invalid mode: %s' % mode) IOError: 無効なモード: w

私を案内してください...

4

1 に答える 1

3

Google App Engineとは」より

アプリケーションは、どのランタイム環境でもファイル システムに書き込むことができません。アプリケーションはファイルを読み取ることができますが、アプリケーション コードでアップロードされたファイルのみです。アプリは、リクエスト間で保持されるすべてのデータに対して、App Engine データストア、memcache、またはその他のサービスを使用する必要があります。Python 2.7 環境では、バイトコードの読み取り、書き込み、および変更が可能です。

アプリケーションのニーズに応じて、blobstore の使用に戻るか、Google Cloud Storage APIを試す必要があります。

于 2012-07-24T18:29:40.437 に答える