1
Je travaille sur une requête multipart avec swift, iOS10.Demande multipart avec ios10
L'image enregistrée sur le serveur avec le code ci-dessous. Et juste recevoir l'erreur 404 lorsque vous ouvrez l'image avec l'URL.
Je ne peux pas trouver ce qui ne va pas dans mon code bien renvoyé à la page Web - https://newfivefour.com/swift-form-data-multipart-upload-URLRequest.html
S'il vous plaît aider.
func connectToServerWithImage(urlString: String, param: Any, image: UIImage, target: NSObject, action: Selector) {
let url = URL(string: urlString)!
var request = URLRequest(url: url)
// set request configuration
let boundary = "Boundary-\(UUID().uuidString)"
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
request.httpMethod = "POST"
// set body
let body = NSMutableData()
let paramDic = param as! Dictionary<String, String>
// set param to body
for (key, value) in paramDic {
body.append("--\(boundary)\r\n".data(using: .utf8, allowLossyConversion: false)!)
body.append("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n".data(using: .utf8)!)
body.append("\(value)\r\n".data(using: .utf8)!)
}
// set image to body
let filename = paramDic["\(paramDic["TYPE"]!)_MST_NO"]! + ".jpg"
body.append("--\(boundary)\r\n".data(using: .utf8, allowLossyConversion: false)!)
body.append("Content-Disposition: form-data; name=\"file\"; filename=\"\(filename)\"\r\n\r\n".data(using: .utf8, allowLossyConversion: false)!)
body.append("Content-Type: image/jpg\r\n\r\n".data(using: .utf8, allowLossyConversion: false)!)
body.append(UIImageJPEGRepresentation(image, 1)!)
body.append("\r\n".data(using: .utf8, allowLossyConversion: false)!)
body.append("--\(boundary)--\r\n".data(using: .utf8, allowLossyConversion: false)!)
request.httpBody = body as Data
// url configuration
let urlConfig = URLSessionConfiguration.ephemeral
urlConfig.timeoutIntervalForRequest = 5
urlConfig.timeoutIntervalForResource = 5
let session = URLSession(configuration: urlConfig)
let dataTask = session.dataTask(with: request) { (data, response, error) in
session.finishTasksAndInvalidate()
DispatchQueue.main.async {
if error == nil {
if let httpUrlResponse = response as? HTTPURLResponse {
if httpUrlResponse.statusCode == 200 {
do {
let jsonObject: Dictionary<String, Any> = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! Dictionary<String, Any>
if jsonObject.isEmpty {
target.perform(action, with: ["RES_CODE:": "NULL"])
}
} catch let _ {}
}
}
}
}
}
dataTask.resume()
}
Est-ce le téléchargement fonctionne pas? Vérifiez le serveur. – ryantxr
@ryantxr Non, l'image n'est pas enregistrée sur le serveur. J'ai spécifié un fichier image avec le nom, mais le fichier image ne peut pas être ouvert. Je suppose qu'il y a une faute de frappe ou quelque chose où sauvegarder les données d'image. – Minjee