Я пытаюсь отправить изображение на сервере с параметром json
, используя Alamofire. Но на сервере они могут получить изображение, но не Json
, который я отправляю. Ниже приведен код, который я использую:Отправка изображения на сервер с параметрами в Swift
let parameters: [String : String] = [
"preferredVenueType": "club",
"userId": "1"
]
let urlRequest = urlRequestWithComponents(baseURL + uploadImage, parameters: parameters , imageData: imageData!)
upload(urlRequest.0, data: urlRequest.1)
.progress { (bytesWritten, totalBytesWritten, totalBytesExpectedToWrite) in
//print("\(totalBytesWritten)/\(totalBytesExpectedToWrite)")
}
.responseJSON {response in
if let JSON = response.result.value {
print("JSON: \(JSON)")
}
func urlRequestWithComponents(urlString:String, parameters:Dictionary<String, String>, imageData:NSData) -> (URLRequestConvertible, NSData) {
// create url request to send
let mutableURLRequest = NSMutableURLRequest(URL: NSURL(string: urlString)!)
mutableURLRequest.HTTPMethod = Method.POST.rawValue
let boundaryConstant = "myRandomBoundary12345";
let contentType = "multipart/form-data;boundary="+boundaryConstant
mutableURLRequest.setValue(contentType, forHTTPHeaderField: "Content-Type")
// mutableURLRequest.HTTPBody = jsonData
// create upload data to send
let uploadData = NSMutableData()
// add image
uploadData.appendData("\r\n--\(boundaryConstant)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
uploadData.appendData("Content-Disposition: form-data; name=\"profileImage\"; filename=\"profileImage.png\"\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
uploadData.appendData("Content-Type: image/png\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
uploadData.appendData(imageData)
// add parameters
for (key, value) in parameters {
uploadData.appendData("\r\n--\(boundaryConstant)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
uploadData.appendData("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n\(value)".dataUsingEncoding(NSUTF8StringEncoding)!)
// uploadData.appendData("Content-Disposition: form-data; name=\"json\"\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
}
uploadData.appendData("\r\n--\(boundaryConstant)--\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
// return URLRequestConvertible and NSData
return (ParameterEncoding.URL.encode(mutableURLRequest, parameters: nil).0, uploadData)
}
Я получаю сообщение об ошибке в ответ, поскольку они не могут получить данные JSON
вместе с файлом изображения.
Вы проверили [alamo fire multipart upload] (https://github.com/Alamofire/Alamofire#user-content-uploading-multipartformdata)? –
@the_UB Я тоже проверил это, но все еще не работает ... – Shruti