如何将图像从原生Android应用程序上传到GAE(Titanium + GAE)

时间:2014-03-08 02:06:30

标签: android google-app-engine

我想在我的Android应用中使用相机拍照,然后将其上传到我的GAE服务器。

这是我用来发送图片的代码:

var saveImageView = Titanium.UI.createImageView({
                top : 0,
                left : 0,
                width : 'auto',
                height : 'auto',
                image : event.media,
            });

            win1.add(saveImageView);
            imageToUpload = saveImageView.toBlob();
            // toBlob, not toImage!! important...
            var xhr = Titanium.Network.createHTTPClient();
            xhr.onload = function() {
                win1.remove(saveImageView);
                // remove the temp view...
            };
            xhr.open('POST', 'not sure what goes here');
            xhr.send({
                image : imageToUpload
            });

我不确定我应该将其用作服务器的网址。

此外,在GAE方面看起来应该是什么样的帮助将会非常有帮助。

我找到了这个来源:http://www.mstrinity.com/blog/2010/12/29/posting-an-image-from-titanium-to-the-app-engine-data-storage-serving-that-image-out/

但它已经4岁了,我根本无法让它工作。

1 个答案:

答案 0 :(得分:1)

posting an image from titanium文章在4年后仍然有效。作者使用'http://10.1.10.15:8888/addimage''not sure what goes here'。这个答案假设您主要想要解释URL。

钛代码使用私有IP地址将图像从Android设备上传到专用网络上的AppEngine开发服务器(端口8888)。开发服务器必须接受来自不仅仅是localhost的传入连接才能工作,请参阅this answer以获得实现该目的的方法。您需要将IP地址替换为您自己的AppEngine开发计算机的IP地址,使用ifconfig,ipconfig或类似命令来查找。

AppEngine服务器的python代码应该可以不加修改地工作,这个答案假定你对它感到满意。

在软件全部与开发服务器配合使用后,您将部署到AppEngine云中的“papercuts-image-gallery”。在钛代码中,您应该用10.1.10.15:8888(没有端口号)替换papercuts-image-gallery.appspot.com部分,但保留URL字符串的其余部分。如果我是你,我会在钛应用程序代码中保留两个URL字符串,并使用标记选择一个,以便轻松地将客户端指向开发服务器或生产服务器,而无需重新编译。