最近AFNetworking的作者Matt Thompson 提出了一個新的類似AFNetworking的網絡基礎庫,并且專門使用最新的Swift語言寫的,名為 Alamofire.
Alamofire 在文件上傳時提供了簡單的方法 upload,我們可以使用它完成文件上傳功能
客戶端代碼:
func load() {
print("開始上傳")
let file = NSBundle.mainBundle().pathForResource("Mog", ofType: "png")
let imageData = UIImagePNGRepresentation(UIImage(contentsOfFile: file!)!)
Alamofire.upload(.POST, "http://api.laravel.com/user/file", multipartFormData: { (data) in
/**
* data: 圖片, name: 服務器接收文件的參數名(判斷是哪一張圖片), fileName: 服務器獲取到圖片的名稱, mimeType: 文件類型
*/
data.appendBodyPart(data: imageData!, name: "file", fileName: "fileasdsad", mimeType: "image/*")
// TO DO ... 這里傳遞更多參數
}) { (result) in
print("數據準備完成;")
switch result {
case .Success(let upload, _, _):
// case .Success(request: Request, streamingFromDisk: Bool, streamFileURL: NSURL?):
upload.responseString(completionHandler: { (respone) in
print(respone)
})
case .Failure(let err):
print(err)
break
}
}
服務器如何接收?
以php為例:
// 'file' 對應客戶端的name字段名
$file = isset($_FILES['file']) ? $_FILE['file'] : null;
更多內容可以關注我的個人博客:Mog的個人博客