Objective c 在obj-c应用程序中对二进制数据使用appengine Blob
我正在编写一个obj-c应用程序,希望将一个大小为几兆的二进制文件上传到我的appengine服务器(python)。我猜我需要使用blob实体来实现这一点,但我不确定如何进行。到目前为止,我一直在使用http请求和响应来发送和接收数据,但它们是用字符串编码的。有人能告诉我,我该如何处理obj-c应用程序中的水滴?我看到了一些涉及http请求的示例,但它们似乎面向web页面,我对它不是很熟悉。有没有像样的教程或演练 我基本上不完全确定,如果我要将其编码到http请求中并通过响应将其发送回,那么如何从客户端将二进制数据转换成http字符串,以及如何在下载二进制数据时从服务器正确地发送回。我在想,也许这种方法必须与我习惯的方法完全不同,将值以param1=val¶m2=val2样式的格式编码到我的请求中,但不确定Objective c 在obj-c应用程序中对二进制数据使用appengine Blob,objective-c,http,binary,blob,Objective C,Http,Binary,Blob,我正在编写一个obj-c应用程序,希望将一个大小为几兆的二进制文件上传到我的appengine服务器(python)。我猜我需要使用blob实体来实现这一点,但我不确定如何进行。到目前为止,我一直在使用http请求和响应来发送和接收数据,但它们是用字符串编码的。有人能告诉我,我该如何处理obj-c应用程序中的水滴?我看到了一些涉及http请求的示例,但它们似乎面向web页面,我对它不是很熟悉。有没有像样的教程或演练 我基本上不完全确定,如果我要将其编码到http请求中并通过响应将其发送回,那么如
我应该为此使用blobstore服务吗?一个重要的注意事项是,我听说BLOB有1兆的限制,但我有2-3兆大小的音频文件需要存储(至少1.8兆)。我最近不得不做类似的事情,尽管它是通过套接字连接的二进制数据。使用XML发送到客户端,作为数据流发送到服务器。在来回发送二进制数据时,我最终对其进行了base64编码。这有点冗长,但特别是在客户端,它使事情更容易处理,在我的XML中没有需要担心的特殊字符。然后我用NSData将其转换成真正的二进制格式。我曾经做过编码和解码,搜索“cyrus”来找到我使用的代码片段,这里有一些可以用 在您的情况下,我会将您的http请求更改为post数据调用,而不是将其全部放在URL中。如果你不确定区别是什么,看看 我对python不太熟悉,但您可以在这方面寻求帮助 希望有帮助
编辑-看起来BLOB是一个不错的选择。查看字符串/blob类型以及有关使用blob的更多信息。这里有三个问题:
http://myweb/images/(thumbnail|fullsize)/<blobid>.(jpg|png|gif)
http://myweb/images/(缩略图|全尺寸)/(jpg | png | gif)
其中BLOBID是动态的,JPG、PNG或GIF可用于获取特定类型的图像。缩略图或fullsize可用于检索您在发布时保存的较小或较大版本。我还假设您有能力使用appengine服务器对其进行编码/解码,但我从未使用过它,因此我猜如果不是这样的话,这可能是不可能的。如果你做不到,那么将其存储为blob将比编码并存储为文本要好。谢谢你的介绍。我去看看。由于其他对象类型的大小限制,我非常确定我必须使用BLOB(尚未确认)。我会更新我原来的帖子来提到这一点。只花了几分钟的时间看看appengine API。我会用一些链接更新我的答案,但听起来你应该已经有了谷歌提供的工具,并且应该使用blob。此外,blob上的大小限制似乎是1MB。我注意到blobstore文档中说“允许应用程序提供大小可达2GB的数据对象”,这让我很困惑这与blob上的1MG限制有什么关系。我有更大的音频文件,我想存储的大小达到几兆,至少不到2兆。这是否意味着我必须打破他们或使用不同的方法?(将更新主要问题)如果你的blob大于限制(如果是1或2MB,不知道在那里),那么你需要将它们分成不同的部分。使用NSData应该不难做到这一点。希望你能解决这个问题。