1

我正在使用 python 作为 iPad 应用程序的服务器端在 GAE 上写作。其中一项功能是将文件保存在服务器上。我浏览了 blobstore 示例,我可以编写类似的有效测试。但是,就我而言,我必须将过程分为两个步骤,一个是调用生成 URL,另一个是通过 blobstore_handlers.BlobstoreUploadHandler 实际接收文件。问题是我从 blobstore.create_upload_url('/upload') 获得的链接似乎已损坏,并且找不到我的上传处理程序。我目前测试的方法是通过一个静态 html 文件,在该文件中我手动将 url 更改为我从 blobstore.create_upload_url('/upload') 获得的那个在职的?

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