File Upload

func imageUploadRequest()
    {

        let mName = nameTextfield.text
        let mSerial = serialTextfield.text
        let mEtc = etcTextfield.text
        let mDate = resistDate
        let mModel = modelTextfield.text



        let myUrl = NSURL(string: Config.URL.fileUploadUrl);

        let request = NSMutableURLRequest(url:myUrl! as URL);
        request.httpMethod = "POST";

        let param = [
            "NumberText" : String(Num),
            "nameText" : mName ?? "",
            "serialText" : mSerial ?? "",
            "etcText" : mEtc ?? "",
            "p_dateText" : mDate ,
            "modelText" : mModel ?? ""
        ]

        let boundary = generateBoundaryString()

        request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")


        let imageData = UIImageJPEGRepresentation(imagePicked.image!, 1)

        if(imageData==nil)  { return; }

        request.httpBody = createBodyWithParameters(parameters: param , filePathKey: "file", imageDataKey: imageData! as NSData, boundary: boundary) as Data




        let task = URLSession.shared.dataTask(with: request as URLRequest) {
            data, response, error in

            if error != nil {
                print("error=\(String(describing: error))")
                return
            }

            // You can print out response object
            print("******* response = \(String(describing: response))")

            // Print out reponse body
            let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
            print("****** response data = \(responseString!)")

            do {
                let json = try JSONSerialization.jsonObject(with: data!, options: []) as? NSDictionary

                print(json ?? "json null값" )

                DispatchQueue.main.async(execute: {
                    self.myActivityIndicator.stopAnimating()
                    self.imagePicked.image = nil;
                });

            }catch
            {
                print(error)
            }

        }

        task.resume()
    }


    func createBodyWithParameters(parameters: [String: String]?, filePathKey: String?, imageDataKey: NSData, boundary: String) -> NSData {
        let body = NSMutableData();

        if parameters != nil {
            for (key, value) in parameters! {
                let s1 = "--\(boundary)\r\n"
                let s2 = "Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n"
                let s3 = "\(value)\r\n"
                let d1: NSData = (s1 as NSString).data(using: String.Encoding.utf8.rawValue)! as NSData
                let d2: NSData = (s2 as NSString).data(using: String.Encoding.utf8.rawValue)! as NSData
                let d3: NSData = (s3 as NSString).data(using: String.Encoding.utf8.rawValue)! as NSData
                body.append(d1 as Data)
                body.append(d2 as Data)
                body.append(d3 as Data)
            }
        }

        let filename = String(Num)+".png"
        let mimetype = "image/png"

        let s4 = "--\(boundary)\r\n"
        let s5 = "Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(filename)\"\r\n"
        let s6 = "Content-Type: \(mimetype)\r\n\r\n"
        let s7 = "\r\n"

        let d4: NSData = (s4 as NSString).data(using: String.Encoding.utf8.rawValue)! as NSData
        let d5: NSData = (s5 as NSString).data(using: String.Encoding.utf8.rawValue)! as NSData
        let d6: NSData = (s6 as NSString).data(using: String.Encoding.utf8.rawValue)! as NSData
        let d7: NSData = (s7 as NSString).data(using: String.Encoding.utf8.rawValue)! as NSData


        body.append(d4 as Data)
        body.append(d5 as Data)
        body.append(d6 as Data)
        body.append(imageDataKey as Data)
        body.append(d7 as Data)


        let s8 = "--\(boundary)--\r\n"
        let d8: NSData = (s8 as NSString).data(using: String.Encoding.utf8.rawValue)! as NSData
        body.append(d8 as Data)

        return body
    }

    func generateBoundaryString() -> String {
        return "Boundary-\(NSUUID().uuidString)"
    }

results matching ""

    No results matching ""