当前位置: 首页 > 知识库问答 >
问题:

如何从Android发送图像并在GAE上接收它?

费锋
2023-03-14

我正在用原生应用程序和云应用程序组件构建一个非常简单的项目。android应用程序只需拍摄一张照片,然后通过POST将其上传到URL。然后,云应用程序将显示接收到的照片,这些照片存储在GAE数据存储中。

目前,android应用程序似乎正确发送照片,并从服务器接收HTTP OK。但是,当我在云应用程序上查看图像时,我没有收到图像,而且它似乎是一个空白条目。

此时,我不确定我的android应用程序组件是否无法正确发送图像,或者云应用程序组件是否无法接收图像。通过使用一个简单的表单将图片上传到上传url,我已经成功地测试了图片是否可以上传,这非常有效。

我现在看到的唯一一件事是,android代码在任何时候都不会设置“photo”的标题名,并将其分配给照片的数据。但是,我似乎不知道如何设置,我不相信这是这里唯一的问题。

我使用这个页面来帮助发送文件的android代码:如何在Android中使用超文本传输协议将文件从移动设备发送到服务器?

以下是重要的android代码:

private class SendPhotoTask extends AsyncTask<File, Void, Void> {
    @Override
    protected Void doInBackground(File... photoFile) {
        if (photoFile != null) {
            String urlToConnect = "http://example.com/upload";
            // Use a static file for testing
            File photoFile2 = new File("/storage/emulated/0/Pictures/PNG_20141206_190223_-1388180531.png");
            try {
                HttpClient httpclient = new DefaultHttpClient();

                HttpPost httppost = new HttpPost(urlToConnect);

                InputStreamEntity reqEntity = new InputStreamEntity(
                        new FileInputStream(photoFile2), -1);
                reqEntity.setContentType("binary/octet-stream");
                reqEntity.setChunked(true); // Send in multiple parts if needed
                httppost.setEntity(reqEntity);
                HttpResponse response = httpclient.execute(httppost);
                Log.d(DEBUG_TAG, response.getStatusLine().toString());
            } catch (Exception e) {
                Log.d(DEBUG_TAG, "Exception Caught: " + e);
            }
        }
        return null;
    }
}

SendPhotoTask类使用以下命令执行:

new SendPhotoTask().execute(photoFile);

这是服务器上接受我的图像的非常简单的代码(使用webapp2用Python编写):

class Gallery(BaseRequestHandler):

    def post(self):
        gallery_name = self.request.get('gallery_name',
                                      DEFAULT_GALLERY_NAME)
        greeting = Photo(parent=gallery_key(gallery_name))

        greeting.photo = base64.b64encode(str(self.request.get('photo')))
        greeting.put()

        query_params = {'gallery_name': gallery_name}
        self.redirect('/?' + urllib.urlencode(query_params))

我做错了什么?

共有1个答案

郎刚捷
2023-03-14

这是从Android App到App引擎(ServletJava)的响应。您应该使用多部分超文本传输协议请求:照片上传不正确GCS App Engine

它不是用Python编写的,但我希望它能帮助您!

 类似资料:
  • 我正在开发一个基于Firebase的聊天演示应用程序的Android应用程序。我面临的问题是,当我想传输图像时,我不知道如何处理这种情况。发送图像时,我在Base64中编码,并将其作为字符串发送。那么这里对图像的解码过程又会是怎样的呢?

  • 然后我得到一个警告 在此行找到多个批注:-类型安全:未检查的从对象到ArrayList的强制转换-类型不匹配:无法从对象转换到ArrayList

  • 如何从Android客户端上传图像到GAE(Google App Engine)数据存储? 尚未找到教程,已尝试了7天。

  • 在我的代码中,我通过java套接字将图像从PC传输到手机。一切正常,图片保存到手机上,没有问题。但问题出现了,有没有可能在屏幕上显示图像而不保存? 服务器代码: 客户端代码:

  • 传送与接收图像 经由无线LAN机能的Ad Hoc模式,与其他PSP™传递图像。 STEP 1:让PSP™准备接收图像 [接收者] 1. 进入(相片),选择图像想保存位置之图标后,按下按钮。 2. 选择[接收]。 准备接收图像。 STEP 2:传送图像 [传送者] 1. 进入(相片),选择想传送图像之图标后,按下按钮。 2. 选择[传送]。 显示正准备接收图像之PSP™的昵称。 3. 选择传送对象。

  • 我在一个类中有一个imageView,在单击imageView时,会出现一个对话框,它有两个选项,可以从相机中获取图像,也可以打开设备的图像库。我想将图像从一个类发送到另一个类,这样它就可以出现在ImageView中。我搜索了很多小时,但我只得到关于从一个类到另一个类的文本数据发送。谁能告诉我从一个类到另一个类的图像发送? 这是来自sender类的代码,它将获取图像。 谢谢你的帮助