如何使用Alamofire.upload功能上传带有某些参数的图片或wav文件



我想上传一些文件到服务器,但它需要一个令牌才能与文件一起发布。我登录时得到了令牌,那么我如何才能发布到服务器?我可以这样写代码吗?

var par=[
           "token":"xxxxxxxxxx",
           "file":"filename.file"
]
Alamofire.upload(.POST, "http://www.xxxxx.xxx", parameters: par)

这在当前版本的Alamofire中很可能不受支持,具体取决于您的服务器实现。

多部分表单数据

您的服务器很可能希望数据是multipart/form-data编码的。目前,Alamofire不支持多部分表单数据。您需要根据RFC-2388和RFC-2045自己对数据进行编码。

如果最终出现这种情况,您可以实现自己版本的规范,也可以使用AFNetworking。如果是这样的话,我现在鼓励您使用AFNetworking。如果你真的想自己实现这一点,这里有一个线程(由@rainypixels提供)可以让你开始。

您需要小心使用此选项,因为它是内存中的解决方案。不要试图以这种方式上传视频或大量图像,或者你的应用程序很快内存不足。

文件上载

如果服务器不期望multipart/form-data编码,则可以使用Alamofire上载方法。

public func upload(URLRequest: URLRequestConvertible, file: NSURL) -> Request

您可以创建一个添加了令牌作为参数的NSURLRequest,然后将fileURL传递给Alamofire进行上传。

总之,我非常确定第一种方法是您的服务器所需要的。不管怎样,希望这能帮助你朝着正确的方向前进。

最新更新