بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

Base64 upload images

مدیریت گفتگو
Farshid Roohi 9 سال پیش
آخرین تغییر: 9 سال پیش

سلام من میخوام این اطلاعات رو سمت سرور با POST بفرستم

توی stack نمونه کد زیاد بود ولی مثالی به این شکل پیدا نکردم

من عکس انتخاب شده توسط کاربر رو تبدیل به base64 میکنم بعد با بقیه اطلاعات پروفایلش سمت سرور با  POST میفرستم

توی اندروید بارها این کارو کردم ولی متاسفانه توی ios نتونستم

ممنون میشم اگه راهنمایی کنید.


        let param = [
            "userId":AppDelegate.USER_ID,
            "name":name,
            "lastName":lname,
            "mobile":mobile,
            "email":email,
            "userPicBase64String":base64str,
            "token":token
        ]

نظرات

کاشی زاده 9 سال پیش
سلام ، لطفا در مورد مشکلتون بیشتر توضیح بدید اگر هم خطایی دارید قرار دهید .
Farshid Roohi 9 سال پیش
سلام - مشکلم رو بالا واضح گفتم، میخوام اطلاعات بالا که توی دیکشنری دارم رو ، که توی اون عکس base64 و اطلاعات پروفایل کاربر هست رو میخوام سمت سرور با POST بفرستم ولی نمی دونم باید چطوری این کارو انجام بدم. توی stack زیاد گشتم ولی متاسفانه چیزی پیدا نکردم که به درد من بخوره.
alfredo 9 سال پیش
بنظر من از کتابخونه alamofire استفاده کنید. هم کارردش خیلی ساده هست. هم باگ نداره. هم restful هست. این هم لینکش: لینک

پاسخ‌ها 1

مشاهده پاسخ صحیح
Farshid Roohi 9 سال پیش

 پاسخ صحیح

این تیکه کد رو میزارم شاید به درد کسی خورد

-  آپلود عکس به صورت base64 و به همراه اطلاعات پروفایل کاربر

   func myImageUploadRequest()
    {
        
        let imageData = UIImageJPEGRepresentation(imgProfile.image!, 0.4)
        
        strBase64ProfileImage = imageData!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
        
        print(strBase64ProfileImage)
    

        let myUrl = NSURL(string: AppDelegate.URL_UPDATE_PROFILE!)!
        
        let request = NSMutableURLRequest(URL:myUrl);
        request.HTTPMethod = "POST";
        
        let param  = [
            "userId":AppDelegate.USER_ID,
            "name":edtName.text!,
            "lastName":edtFamily.text!,
            "mobile":edtMobile.text!,
            "email":edtEmail.text!,
            "userPicBase64str":strBase64ProfileImage,
            "token":""
        ]
        let boundary = generateBoundaryString()
        
        request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
        
        
        if(imageData==nil)  { return; }
        
        request.HTTPBody = createBodyWithParameters(param, boundary: boundary)
        
        
        print("Start")
        let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
            data, response, error in
            
            if error != nil {
                print("error=\(error)")
                return
            }
            
            // You can print out response object
            print("******* response = \(response)")
            
            // Print out reponse body
            let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
            print("****** response data = \(responseString!)")
            
            do {
                let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary
                
                print(json)
                
                dispatch_async(dispatch_get_main_queue(),{
                    print("End")
                });
                
            }catch
            {
                print(error)
            }
            
        }
        
        task.resume()
    }
    func createBodyWithParameters(parameters: [String: String]?, boundary: String) -> NSData {
        let body = NSMutableData();
        
        if parameters != nil {
            for (key, value) in parameters! {
                body.appendString("--\(boundary)\r\n")
                body.appendString("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n")
                body.appendString("\(value)\r\n")
            }
        }
        
        body.appendString("--\(boundary)--\r\n")
        
        return body
    }
    
    
    
    func generateBoundaryString() -> String {
        return "Boundary-\(NSUUID().UUIDString)"
    }
    
    
}
extension NSMutableData {
    
    func appendString(string: String) {
        let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
        appendData(data!)
    }

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .