处理blobstore_handlers.BlobstoreUploadHandler

时间:2012-11-08 07:49:46

标签: python blobstore

我正在GAE上使用python作为iPad App的服务器端。其中一项功能是在服务器上保存文件。我浏览了blobstore示例,我可以编写类似的测试工具。但是,在我的情况下,我必须将进程分为两个步骤,一个调用生成URL,另一个是通过blobstore_handlers.BlobstoreUploadHandler实际接收文件。 问题是我从blobstore.create_upload_url('/ upload')获得的链接似乎被破坏,我的上传处理程序无法找到。我现在测试这个的方法是通过静态html文件,我手动将url更改为我从blobstore.create_upload_url('/ upload')获取的URL 任何想法为什么一旦我将进程分成两个相同的代码停止工作?

代码: 这是返回运行良好的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))  

,这是我的本地使用和更改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)) 

感谢您的帮助

0 个答案:

没有答案