我在通过文档选择控制器上传文档文件时遇到问题。我选择了文件通过文件选择器。并使用服务中的多部分数据发送文件。但是xcode在ios swift中给出了一些错误。
这是我的代码For Image upload。
Alamofire.upload(multipartFormData: { (multipartFormData) in
for (key, value) in params {
multipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)
}
multipartFormData.append(imageData!, withName: "upload_photo", fileName: "img.png", mimeType: "image/jpeg")
}, to:pageURL)
{ (result) in
switch result {
case .success(let upload, _, _):
self.stopLoader()
upload.uploadProgress(closure: { (Progress) in
print("Upload Progress: \(Progress.fractionCompleted)")
})
答案 0 :(得分:-1)
使用我的下面的课程,这是一个简单易懂的工作文件:
import UIKit
import Alamofire
class TDWebServices: NSObject {
static let shared = TDWebServices()
func post(urlString : String , param : [String : Any], completionHandler : @escaping ( _ result : Any?) -> ()) {
Alamofire.request(urlString, method: .post, parameters: param, encoding: JSONEncoding.default, headers: ["Accept": "application/json"]).responseJSON { (response) in
switch response.result {
case .success:
let json = response.result.value as? NSDictionary
completionHandler(json)
case .failure(let error):
print(error)
completionHandler(nil)
return
}
}
}
func uploadImage(urlString : String , image : UIImage, param : [String : Any], completionHandler : @escaping ( _ result : Any?) -> ()) {
guard let imageData = UIImageJPEGRepresentation(image, 0.5) else {
print("Could not get JPEG representation of UIImage")
return
}
let header: HTTPHeaders = [
"Content-type": "multipart/form-data"
]
Alamofire.upload(multipartFormData: { multipartFormData in
for (key, value) in param {
multipartFormData.append("\(value)".data(using: String.Encoding.utf8)!, withName: key as String)
}
multipartFormData.append(imageData,
withName: "image", // <- It is param for uploading the file make sure it is perfect as per your API
fileName: "image.jpg",
mimeType: "image/jpeg")
},
to: urlString,
headers: header, // ["Authorization": "Basic xxx"]
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.uploadProgress { progress in
// progressCompletion(Float(progress.fractionCompleted))
}
upload.validate()
upload.responseJSON { response in
completionHandler(response.result.value)
}
case .failure(let encodingError):
print(encodingError)
completionHandler(nil)
}
})
}
}
如何使用?
let param = ["user_id" : 123 as Any] // Whatever your params are
// showActivity() // <- show activity indicator
TDWebServices.shared.post(urlString: <your_api_url>, param: param) { (res) in
// hideActivity() // <- hide activity indicator
if res != nil{
let aDict = res as? [String : Any] // your response
// Hnadle your code here
}
else{
self.showAlert(title: "Invalid!", message: "Internet connection issue.", calcelHandler: {}) // <- If you have internet issue
}
}
仍然面临问题然后让我知道..