来自文件URL的NSURLConnection + MultiPart表单

时间:2010-06-25 13:25:33

标签: iphone objective-c cocoa

所以我有一个应用程序,当前使用多部分表单将图像上传到Web服务,我只是简单地使用NSMutableRequest和NSURLConnection。我似乎遇到的问题是我希望能够上传一个给定的文件而不将其作为NSData对象加载到程序中,而只是从文件路径。我听说这是可能的,我知道ASIHTTPRequest似乎是这样做的。任何帮助将非常感激!谢谢!

1 个答案:

答案 0 :(得分:2)

你错了。您不能只是将文件路径发送到远程服务器,因为服务器仍然只有路径,但没有文件的内容。甚至ASIHTTPRequest仍在将文件读入内存并使用请求正文中的文件内容创建HTTP请求。他们只是有一个更好的API来做它。

从技术上讲,你可以通过提供ASIHTTPRequest的路径来发布文件,但ASIHTTPRequest只是为你做了肮脏的工作。在某些时候,你将不得不将文件加载到内存中。

另一种方法是创建一个自定义NSInputStream子类(让我们称之为HTTPPostStream),它动态构建HTTP POST主体,给定一些文件路径,什么不是。然后它可以直接从磁盘流出字节并传入传出请求,从而避免将大文件加载到内存中。这将是更多工作,但您不必担心将2GB文件加载到内存中。

为简单起见,ASIHTTPRequest看起来相当不错。