iphone - 在我的应用程序中创建网络服务器;需要处理 POST 请求以上传文件

Posted

技术标签:

【中文标题】iphone - 在我的应用程序中创建网络服务器;需要处理 POST 请求以上传文件【英文标题】:iphone - making a webserver in my app; need to handle POST request to upload a file 【发布时间】:2009-11-13 08:21:04 【问题描述】:

我需要一些机制来备份和恢复我的 iphone 应用程序中的一些数据文件,让我的用户保存他们的数据并在以后恢复。我发现做到这一点的最好方法是在应用程序中制作我自己的 Web 服务器,遵循 iPhone Developer's cookbook 中 Erica Sadun 的示例。但是该示例没有显示将文件上传到手机网络服务器本身的任何方法。任何人都知道如何处理这个问题?

在普通的 Web 服务器上,我希望实现一个带有 action=foo.cgi 或类似内容的表单。但我认为我不能在 iphone 应用程序中运行这样的脚本。那么我如何处理用户在浏览器中选择文件并上传文件,以及运行 Web 服务器的应用程序正确处理它并将其交给它自己的方法。

谢谢。

【问题讨论】:

【参考方案1】:

如果我正确理解了您的问题,您不是在尝试将文件从手机上传到网络服务器,而是反过来。

如果是这种情况,那么您可能需要查看CocoaHTTPServer。

【讨论】:

谢谢。你是对的,我想要一种在我的 iphone 上运行 HTTP 服务器的方法,我可以从浏览器上传文件。我认为这是在正确的轨道上,但对于像我这样的简单任务来说可能有点重。我可以按照 Erica Sadun 示例将文件从手机传送到浏览器,但不能 POST。不过会多看一下这个 CocoaHTTPServer。 要记住一件事:要让您的手机作为服务器运行,远程浏览器必须能够找到其 IP 地址。服务器通常分配有固定的 IP 地址,但 iPhone 通常作为 DHCP 客户端运行,因此 IP 地址会发生变化。解决这个问题的方法是使用 Bonjour(CocoaHTTPServer 支持),但这意味着浏览器客户端也必须支持它。这对 Mac 来说没问题,但大多数 Windows 客户端没有它(除非它带有 iTunes 或 QT 安装)。如果您能弄清楚如何使工作流程适合您的应用,那么让手机充当客户端可能会更轻松。 谢谢。我相信我可以找到 iPhone 的 IP 地址并将其打印出来供用户使用,然后用户可以将其输入到浏览器中。所以这应该不是问题。另一方面,制作一个 POST 处理程序似乎需要做很多工作。读取部分套接字缓冲区,然后将其全部组装到一个文件中。我可能应该只使用 CocoaHTTPServer 而不是浪费我的时间编写代码,但这似乎是一个诱人的挑战!【参考方案2】:

创建一个 NSMutableURLRequest 的实例。这有一个名为 -setHTTPMethod: 的方法和一个名为 -setHTTPBody: 的方法。将方法设置为 POST 并将文件内容放入正文中。

另一个值得关注的是CurlHandle,它的 -setPostDictionary: 方法。这使您可以像使用表单字段一样使用字典。

很抱歉,这只是您问题一半的答案 - 现在没有时间在您的网络服务器中查找有关处理传入文件数据的详细信息。

【讨论】:

【参考方案3】:

另一个选项是ASIHTTPRequest 库。

【讨论】:

【参考方案4】:

我不认为这是保存/恢复数据的最佳方式,事实上这不是很合理。为什么不将数据保存到文档中,这样会简单得多。

【讨论】:

以上是关于iphone - 在我的应用程序中创建网络服务器;需要处理 POST 请求以上传文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iPhone 中创建本地歌曲应用程序?

在iphone中创建pdf缩略图

如何在iphone中创建一个类实例?

无法在 iPhone 上运行在 xcode 中创建的应用程序

用于在 Iphone 编程中创建 pdf 的库 [关闭]

如何根据工作 Python 代码在 iPhone 应用程序的 opencvWrapper 文件中创建 OpenCV 函数 findcontour