آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

Base64 upload images

Farshid Roohi  9 سال پیش  9 سال پیش
+1 0

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

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

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

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

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


        let param = [
            "userId":AppDelegate.USER_ID,
            "name":name,
            "lastName":lname,
            "mobile":mobile,
            "email":email,
            "userPicBase64String":base64str,
            "token":token
        ]
0 0
سلام ، لطفا در مورد مشکلتون بیشتر توضیح بدید اگر هم خطایی دارید قرار دهید . (9 سال پیش)
0 0
سلام - مشکلم رو بالا واضح گفتم، میخوام اطلاعات بالا که توی دیکشنری دارم رو ، که توی اون عکس base64 و اطلاعات پروفایل کاربر هست رو میخوام سمت سرور با POST بفرستم ولی نمی دونم باید چطوری این کارو انجام بدم. توی stack زیاد گشتم ولی متاسفانه چیزی پیدا نکردم که به درد من بخوره. (9 سال پیش)
0 0
بنظر من از کتابخونه alamofire استفاده کنید. هم کارردش خیلی ساده هست. هم باگ نداره. هم restful هست. این هم لینکش: لینک (9 سال پیش)
 برای این سوال 1 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
Farshid Roohi  9 سال پیش
+2 0

 پاسخ صحیح

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

-  آپلود عکس به صورت 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!)
    }

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