gpt4 book ai didi

ios - 如何发送带有文本参数和图像文件的帖子数据?

转载 作者:行者123 更新时间:2023-11-28 08:46:20 24 4
gpt4 key购买 nike

我制作了一个应用程序,允许用户将图像和多个图像上传到我们的服务器。如果我只是发布文本数据,我的代码成功地将数据发布到服务器,但是当我尝试发布带有图像数据的文本数据时,我的服务器抛出异常。

这是我的代码:

class func Enroll(image: UIImage, date: String, studentid: String, guardianid:String, type:String){
//date,student_id,type,guardian_id,image, type

var textBody : String?
let imageData = UIImagePNGRepresentation(image)

let boundary = NSString(format: "---------------------------14737809831466499882746641449")
let contentType = NSString(format: "multipart/form-data; boundary=%@",boundary)
let URL: NSURL = NSURL(string: "http://api-cc.appsence.net/v1/signs")!

let request:NSMutableURLRequest = NSMutableURLRequest(URL:URL)
request.HTTPMethod = "POST"

let body : NSMutableData = NSMutableData()

body.appendData(NSString(format: "\r\n--%@\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData(NSString(format:"Content-Disposition: form-data; name=\"profile_img\"; filename=\"img.jpg\"\\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData(NSString(format: "Content-Type: application/octet-stream\r\n\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData(imageData!)
body.appendData(NSString(format: "\r\n--%@\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!)

//fill text value here
textBody = "date=\(date)&student_id=\(studentid)&guardian_id=\(guardianid)&type=\(type)"

print("text body : \(textBody!)")
let bodyTextData = textBody!.dataUsingEncoding(NSUTF8StringEncoding);
body.appendData(bodyTextData!)
request.addValue(contentType as String, forHTTPHeaderField: "Content-Type")
// if data string use data using encoding

request.HTTPBody = body

NSURLSession.sharedSession().dataTaskWithRequest(request){ (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in

if error == nil{

print("sukses : \(NSString(data: data!, encoding: NSUTF8StringEncoding)!)")

}else{

print("ini error save \(NSString(data: data!, encoding: NSUTF8StringEncoding)!)")

}


}.resume()

}

我该如何解决这个问题?

最佳答案

Alamofire 3+

  // import Alamofire
func uploadWithAlamofire() {
let image = UIImage(named: "myPhoto")!

// define parameters
let parameters = [
"hometown": "bodrum",
"living": "izmir"
]

// Begin upload
Alamofire.upload(.POST, "upload_url",
// define your headers here
headers: ["Authorization": "auth_token"],
multipartFormData: { multipartFormData in

// import image to request
if let imageData = UIImageJPEGRepresentation(image, 1) {
multipartFormData.appendBodyPart(data: imageData, name: "file", fileName: "myImage.png", mimeType: "image/png")
}

// import parameters
for (key, value) in parameters {
multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding)!, name: key)
}
}, encodingMemoryThreshold: Manager.MultipartFormDataEncodingMemoryThreshold,
encodingCompletion: { encodingResult in
switch encodingResult {
case .Success(let upload, _, _):
upload.responseJSON { result in
debugPrint(result)
}
case .Failure(let encodeError):
print(encodeError)
}
})
}

关于ios - 如何发送带有文本参数和图像文件的帖子数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35238647/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com