In meiner App möchte ich einige Bilder auf den Server hochladen. Das Problem ist, dass ich es nicht hochladen kann. Der gleiche Code funktioniert gut für Server und ich bin in der Lage, das Image hochzuladen. Aber für laravel
Server kann ich es nicht hochladen.Bild Upload auf Laravel Server iOS
-Code
func sendImageWithParams(image:UIImage, url : String,photoParamKey:String,params : [String:String],quality:CGFloat=0.7,getResponse : Response) -> Void {
let request = NSMutableURLRequest(URL: NSURL(string: url)!);
request.HTTPMethod = "POST"
let boundary = generateBoundaryString()
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
let imageData = UIImageJPEGRepresentation(image, quality)
if(imageData==nil) { return; }
request.HTTPBody = createBodyWithParameters(params,photoParamKey:photoParamKey, imageDataKey: imageData!, boundary: boundary)
request.timeoutInterval = 20.0
let task = NSURLSession.sharedSession().dataTaskWithRequest(request,
completionHandler: {
(data, response, error) -> Void in
if let data = data {
getResponse(success: data, error: nil)
} else if let error = error {
getResponse(success: nil , error: error)
}
})
task.resume()
}
func generateBoundaryString() -> String {
return "Boundary-\(NSUUID().UUIDString)"
}
func createBodyWithParameters(parameters: [String: String]?,photoParamKey : String,imageDataKey: NSData, 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")
}
}
let mimetype = "image/jpg"
let filename = "image"
body.appendString("--\(boundary)\r\n")
body.appendString("Content-Disposition: form-data; name=\"\(photoParamKey)\"; filename=\"\(filename)\"\r\n")
body.appendString("Content-Type: \(mimetype)\r\n\r\n")
body.appendData(imageDataKey)
body.appendString("\r\n")
body.appendString("--\(boundary)--\r\n")
return body
}
}
Antwort, die ich
<OS_dispatch_data: data[0x7fe220759040] = { leaf, size = 30, buf = 0x7fe22063cff0 }>
Optional({"status_code":422,"status":"Failure","response":{"userId":["The user id field is required."],"propertyId":["The property id field is required."],"title":["The title field is required."],"description":["The description field is required."]},"message":"422 Unprocessable Entity","debug":{"line":22,"file":"\/var\/www\/html\/embassy\/vendor\/dingo\/api\/src\/Http\/FormRequest.php","class":"Dingo\\Api\\Exception\\ValidationHttpException","trace":["#0 \/var\/www\/html\/embassy\/vendor\/laravel\/framework\/src\/Illuminate\/Validation\/ValidatesWhenResolvedTrait.php(25): Dingo\\Api\\Http\\FormRequest->failedValidation
Die Art, wie ich die Funktion
let p = ["title" : "a",
"propertyId":"1",
"description":"hey",
"userId":"131",
"params":"mobile"
]
NetworkRequest.sharedInstance.sendImageWithParams(imageView.image!, url: "http://52.66.131.92/api/blogs", photoParamKey: "photo", params: p, getResponse: { (success, error) in
print("Error:\(error)")
print("Success:\(success)")
})
PS verwende ich immer -> ich alle Parameter sende richtig !.
Der Fehler sieht so aus, als würden Sie die Validierung einfach nicht bestehen. Vielleicht die Art, wie du deine Daten postest. Versuchen Sie, es zu verschiedenen Formen wie 'Form-data' oder' urlencoded' zu tauschen und sehen Sie, welcher Ihnen einen anderen Fehler gibt. Ich helfe dir beim Debuggen. – EddyTheDove
Können Sie Ihre Anfrage params? – Paras
@Paras Ich habe meinen Beitrag bearbeitet, bitte sehen Sie sich um. –