के लिए संदर्भ प्राप्त करें मैंने मल्टीपार्ट फ़ॉर्म डेटा में छवियों को अपलोड करने के लिए अलामोफ़ीयर का उपयोग किया है। मैं अपने लक्ष्य को प्राप्त करने में सफल हूं। प्रत्येक बार जब मैं एक छवि अपलोड करता हूं, तो मैं "uploadDocWebService" फ़ंक्शन को कॉल करता हूं। इसलिए फ़ंक्शन को बुलाए जाने की संख्या, छवियों की संख्या के बराबर होती है। मैं प्रत्येक कॉल के परिणाम की पहचान करने में निराश हूं। मेरी छवियों को सफलतापूर्वक अपलोड कर रहे हैं। यदि कोई सर्वर विफलता है, या इंटरनेट कनेक्शन विफलता अपलोड होने में विफल रहता है, तो मैं यह नहीं पहचान सकता कि मुझे कौन सी छवि को दृश्य से हटा देना चाहिए, जो विफल रहा है। मैं प्रत्येक छवि अपलोड के लिए पैरामीटर के रूप में indexPath पास करता हूं। लेकिन इससे पहले कि मैं पहली छवि अपलोड के परिणाम प्राप्त करने से पहले इंडेक्सपैथ नवीनतम छवि अपलोड को अद्यतन करता हूं। क्या कोई मुझे इस स्थिति के लिए बेहतर दृष्टिकोण सुझा सकता है।अलामोफ़ीयर अनुरोध के लिए एकाधिक कॉल, प्रत्येक कॉल
func uploadDocWebservice(fileUrl: NSURL , progressView : PWProgressView , index : String , imageData : NSData? , name : String , mimeType : String , uploadType : String){
let url = "\(kBaseURL)\(uploadDocsUrl)"
var type = String()
var networkGroupId = String(SingletonClass.sharedInstance.selectedNetworkId!)
if SingletonClass.sharedInstance.groupPopUp == true {
type = "group"
networkGroupId = String(SingletonClass.sharedInstance.selectedSubNetworkOrGroup!)
}else {
type = "network"
}
Alamofire.upload(
.POST,
url,
multipartFormData: { multipartFormData in
if uploadType == "Image" {
multipartFormData.appendBodyPart(data: imageData! , name: "file", fileName: name, mimeType: mimeType)
}else {
multipartFormData.appendBodyPart(fileURL: fileUrl, name: "file")
}
multipartFormData.appendBodyPart(data:"\(SingletonClass.sharedInstance.tokenId)".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"token")
multipartFormData.appendBodyPart(data:"\(type)".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"networkGroup")
multipartFormData.appendBodyPart(data:"\(networkGroupId)".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"networkGroupId")
},
encodingCompletion: { encodingResult in
switch encodingResult {
case .Success(let upload, _, _):
upload.progress { bytesRead, totalBytesRead, totalBytesExpectedToRead in
let ratio: Float = Float(totalBytesRead)/Float(totalBytesExpectedToRead)
// Call main thread.
dispatch_async(dispatch_get_main_queue(), {
progressView.progress = ratio
})
}
upload.responseJSON { response in
let dataString = NSString(data: response.data!, encoding:NSUTF8StringEncoding)
print(dataString)
self.edited = true
do{
let json = try NSJSONSerialization.JSONObjectWithData(response.data!, options: .MutableLeaves) as? NSDictionary
if let success = json!["success"] as? Int {
if success == 1 {
let id = json!["response"]!.objectForKey("id") as! String
let docName = "\(json!["response"]!.objectForKey("name") as! String).\(json!["response"]!.objectForKey("ext") as! String)"
let dic = ["name" : docName , "Id" : id]
self.uploadedDocsIdArray.addObject(dic)
self.uploadedArrayJustNames.addObject(docName)
print(self.uploadedDocsIdArray)
}else {
// delete image from view here
}
}
}catch{
// delete image from view here
invokeAlertMethod("Error", msgBody: "Invalid Json", delegate: self)
}
}
case .Failure(let encodingError):
print(encodingError)
}
}
)
}
अगर मैं जानते हैं जो परिणाम के लिए जो फोन जुड़ा हुआ है, जो मुझे देखने से उस विशेष चित्र हटाने में मदद कर सकता:
यहाँ कोड मैं छवि अपलोड करने के लिए इस्तेमाल करते हैं।
आपको प्रत्येक छवि के लिए अद्वितीय आईडी या कुछ छवि जो अद्वितीय रूप से प्रत्येक छवि के साथ जुड़ा हुआ होना चाहिए। उदाहरण के लिए, आपके पास एक अलग अपलोड ट्रैकिंग डिक्शनरी हो सकती है जिसमें छवि-आईडी को चाबियाँ और बूल के रूप में इसका मूल्य शामिल है। प्रारंभ में सभी मूल्य "झूठे" होंगे। जब भी एक छवि-आईडी के लिए अपलोड सफल होता है तो आप उस मान को "सत्य" पर सेट कर सकते हैं। – san
मैंने पहले ही यह कोशिश की है। यदि कोई कनेक्शन या सर्वर विफलता है तो मुझे असफल होने वाली छवि आईडी वापस नहीं दी जाएगी। असफल छवियां एक से अधिक हो सकती हैं। –
क्या आपको सफल अपलोड के लिए छवि-आईडी मिलती है? – san