1

iPadアプリのサーバー側でPythonを使用してGAEで書いています。機能の 1 つは、サーバーにファイルを保存することです。私はブロブストアの例を見て、動作する同様のテストを書くことができます. ただし、私の場合、プロセスを 2 つのステップに分割する必要があります。1 つは URL を生成するための呼び出し、もう 1 つは blobstore_handlers.BlobstoreUploadHandler を介して実際にファイルを受信するための呼び出しです。問題は、blobstore.create_upload_url('/upload') から取得したリンクが壊れているようで、アップロード ハンドラが見つからないことです。現時点でこれをテストする方法は、手動で URL を blobstore.create_upload_url('/upload') から取得したものに変更する静的 html ファイルを使用することです。プロセスを 2 つに分割すると、同じコードが停止する理由働く?

コード: これは、うまく機能する URL を返す関数です。

class GetUploadURL(webapp2.RequestHandler):
# this function will return the upload url to be used in a form
  def get(self):

        params=['session_id']

        has_params, missing_param = has_all_parameters(self,params)     

        if not has_params:
            show_error(self, MISING_PARAMS_ERROR, params)
            return      

        user = validate_session(self)
        if not user:
            show_error(self, UNKNOWN_SESSION_ID)
            return 

        upload_url = blobstore.create_upload_url('/upload')
        ret_dict = { STATUS_CODE :STATUS_OK ,
                        UPLOAD_URL :  upload_url 
                       }`enter code here`
        self.response.out.write(json.dumps(ret_dict))  

そして、これがhtmlです。ローカルで使用し、上記の関数を呼び出して取得した長いリンクでupload_urlを変更しています

<html>
<body>
<form action="upload_url" method="POST" enctype="multipart/form-data">
    <input  type="hidden" id="session_id" name="session_id" value="ahJkZXZ-ZGVzaWduZWRudG9maXRyDQsSB1Nlc3Npb24YDQw" >

    <a>Upload File: </a><input type="file" name="file">
    <br> 
    <input type="submit" name="submit" value="Submit"> 

</form>
</body>
</html>

これは、送信をクリックしてもサーバーに到達しない場所です。リンクが壊れているようです。

これは投稿を受け取る関数ですが、呼び出されませんでした

class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):
  def post(self):
        params=['session_id']

        has_params, missing_param = has_all_parameters(self,params)     

        if not has_params:
            show_error(self, MISING_PARAMS_ERROR, params)
            return      

        user = validate_session(self)
        if not user:
            show_error(self, UNKNOWN_SESSION_ID)
            return 

        upload_files = self.get_uploads('file')  # 'file' is file upload field in the form
        blob_info = upload_files[0]
        file1 = UserFile()
        file1.user = user
        file1.file_name= blob_info.filename
        file1.file_key = blob_info.key()
        file1.put()
        ret_dict = {STATUS_CODE: STATUS_OK,'file_key': str(file1.file_key)}
        self.response.out.write(json.dumps(ret_dict)) 

助けてくれてありがとう

ラン

4

0 に答える 0