我想将一个csv文件从Android发送到Python AppEngine。 我正在使用Blobstore API并发送文件,我使用MultipartEntityHttpPostHttpGet

因此,根据Blob存储API,则必须调用方法create_upload_url('/upload')生成的URL上传的文件,并使用此URL作为动作要上传的文件。 如你所见

我在做什么? 我调用一个创建该URL的方法,并将其返回到我的android应用。 并使用此网址上传文件。

生成的网址采用以下格式:

myapp.appspot.com/_ah/upload/ 大量字母和字母/

基本上是这样的:

Android代码

 HttpClient httpClient = new DefaultHttpClient();
 HttpGet httpGet = new HttpGet(mContext.getString("myapp.appspot.com/get_blobstore_url");

 HttpResponse urlResponse = httpClient.execute(httpGet);

 result = EntityUtils.toString(urlResponse.getEntity());

 Uri fileUri = Uri.parse("file:///sdcard/dir/myfile.csv"); // Gets the Uri of the file in the sdcard
 File file = new File(new URI(fileUri.toString())); // Extracts the file from the Uri

 FileBody fileBody = new FileBody(file, "multipart/form-data");

 MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
 entity.addPart("file", fileBody);

 HttpPost httpPost = new HttpPost(result);

 httpPost.setEntity(entity);

 HttpResponse response = httpClient.execute(httpPost);
 response.getStatusLine();

AppEngine代码

# Returns only the URL in which the file will be uploaded, so this URL may be used in client for upload the file
class GetBlobstoreUrl(webapp.RequestHandler):
    def get(self):
        logging.info('here')
        upload_url = blobstore.create_upload_url('/upload')
        logging.info("url blob %s", upload_url)
        self.response.out.write(upload_url)

class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):
    def post(self):
        logging.info('inside upload handler')
        upload_files = self.get_uploads('file')
        blob_info = upload_files[0]
        return blob_info.key()

def main():
    application = webapp.WSGIApplication([('/upload', UploadHandler), ('/get_blobstore_url', GetBlobstoreUrl)], debug=True)
    run_wsgi_app(application)

if __name__ == '__main__':
    main()

问题1

当我将文件发送到AppEngine返回的网址时,这会自动调用服务器方法UploadHandler吗? 因为未显示此方法内的日志消息, 并且正在插入文件 ,并且使用生成的url上传文件时收到的响应是404错误,如果正在上传文件,为什么会出现该错误?

问题2

上传文件后,如何解析服务器中的csv文件并将文件中的所有数据插入数据存储区?

谢谢。

===============>>#1 票数:0 已采纳

当我将文件发送到AppEngine返回的网址时,这会自动调用服务器方法UploadHandler吗?

正确。

当我将文件发送到AppEngine返回的网址时,这会自动调用服务器方法UploadHandler吗?

向我们显示您的服务器日志-您获得404的网址是什么? 您从上传处理程序中收到任何日志消息吗?

上传文件后,如何解析服务器中的csv文件并将文件中的所有数据插入数据存储区?

使用BlobReader API ,然后将打开的文件传递给python csv模块。

  ask by rogcg translate from so

未解决问题?本站智能推荐:

1回复

适用于Android应用的Python AppEngine编码? [关闭]

很难说出这里的要求。 这个问题是模棱两可的,模糊的,不完整的,过于广泛的或修辞性的,不能以目前的形式合理地回答。 如需帮助澄清此问题以便可以重新打开, 请访问帮助中心 。 我是新手Android开发
1回复

如何使用AppEngine Python通过Firebase Cloud Messaging将通知发送到Android应用程序

这是我第一次向stackoverflow发帖提问,所以我会尽力以明确的方式扩展我的问题。 我试图找到一个答案时,我的头撞在了墙上,但我目前陷入困境,所以提供的任何见解都会非常感激。 我正在尝试将FCM消息发送到我开发的Android应用程序。 我按照Android快速入门教程进行了操作
1回复

为Android应用程序构建Appengine后端,Python服务器可以处理巨大的负载吗?

我正在开发一个Android应用程序,我认为它有可能达到1000万用户。 我真的很喜欢Python,但我不是Java的忠实拥护者。 Google为应用引擎支持的Android项目制作的示例应用程序使用Java。 我只发现了由私人制作的后端Python库。 这些够好吗? Appe
1回复

Android上的Appengine身份验证

我有一个Python App Engine应用程序,用户可以使用foursquare登录,然后他们必须使用Hunch登录。 这一切都很好,但现在我试图让用户在Android设备上进行身份验证。 我不希望用户必须登录手机上的4sq和hunch,所以我希望他们能够通过我的后端进行身份验证,并从那
1回复

Python Appengine使用JSON初始化NDB模型对象

我已经看到了无数关于如何使用to_dict()和json.dumps()编码到json的ndb.Model对象的示例,但是找不到一个相反的工作示例:解码json的结果.loads()到一个ndb.Model对象。 这是我尝试过的,但是没有用: 请注意,尽管CustomClass继承
1回复

从Java到HTTP的HTTPPost分段(上传文件)到webapp2

我正在尝试将文件上传到GAE-服务器端代码: 使用HTML,我可以使其正常工作: 但是我必须能够从Java发出多部分的发布请求。 我在openshift上托管了一个flask项目(烧瓶, request.files[0]代替) ,其中Java代码似乎可以正常工作: 但是
1回复

使用Android应用程序将文件上传到我的Google API项目

我需要一些帮助。 我一直在开发一个Android游戏,其中将有关您进度的一些信息发送到服务器。 另外,您需要记录您的声音,游戏将发送到我的Google服务器上的blobstore。 我设法使用Jsoup将表单上传到我的数据存储区。 我的问题是我一直试图以各种方式将内容上传到我所做
2回复

Google App Engine Python上传错误

在尝试通过Google App Engine Launcher部署我的Python API时,我不确定为什么会出现此错误。 任何想法我在这里发生了什么? 下面是错误和我关联的App.yaml文件。
1回复

从Android应用程序将录音上传到Google App Engine

我创建了一个进行基本语音录制(存储为.mp4)的android应用。 我想添加一项功能,可以将记录(一次只记录一次,不需要批量)发送到Google App Engine云存储。 然后,我希望能够在(非常基本的)云应用程序上收听这些录音。 我不想使用Blob存储区,但要使用数据存储区。 我
1回复

使用Python后端的Google Endpoints Android

好。 所以我已经研究了几天,找不到解决我问题的答案。 我有一个Google App Engine Python项目,我已经为学校工作了几个月,现在我希望添加一个Android应用程序来配合它。 我在Python中创建了一个API服务器,可以在Javascript和API控制台上运行。 我