将带有其他参数的图像数组从 xcode 上传到 php



我是初学者,我不确定如何使用Alamofire将图像数组提交到我的数据库。下面是表单加载时我的代码

override func viewDidLoad()
{
super.viewDidLoad()
// adding page image into the image square
for i in 1...3
{
var imgView : UIImageView!
imgView = UIImageView(frame: CGRect(x: 0, y: 0, width: 150, height: 150))
imgView.contentMode = .scaleAspectFit
imgView.tag = i
imgView.image = UIImage(named: "page.png")
imageArray.add(imgView)
}
videoView.isHidden = true
photoView.type = iCarouselType.coverFlow2
photoView.reloadData()
}

用户选择/拍照后,图像将替换页面.png..一切正常。以下是替换代码

public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])
{
let chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage
self.selectedImageView.image = chosenImage
imageArray.replaceObject(at: self.selectedImageView.tag-1, with: self.selectedImageView)
photoView.reloadData()
dismiss(animated:true, completion: nil)
}

至于提交部分,我在理解数组以及将数组提交到 php/数据库方面遇到了麻烦。 请帮我放,因为我不知道如何从这里继续。我需要提交图像数组(最多 3 张图像(以及表单中的其他参数。

@IBAction func submitAction(_ sender: Any)
{
let URL_Submit = "http://localhost/form.php"
let parameters: Parameters=[
"block":blockText.text!,
"category":catText.text!,
"description":descText.text!]

Alamofire.request(URL_Submit, method: .post, parameters: parameters).responseJSON
{
response in
//printing response
print(response)
let alertController = UIAlertController(title: "Success!", message:
"Your feedback has been submitted", preferredStyle: UIAlertControllerStyle.alert)
alertController.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.default,handler: nil))
self.present(alertController, animated: true, completion: nil)
}
}

我删除了在我的提交操作中上传图像的尝试,因为它不起作用。请帮我放,因为我现在真的不知道继续。谢谢你的时间

您必须使用分段上传将文件上传到服务器,例如这里是使用alamofire上传 4 张图像的示例。您也可以制作一个数组并上传多个图像:

func uploadImagesAndData(params:[String : AnyObject]?,image1: UIImage,image2: UIImage,image3: UIImage,image4: UIImage,success:@escaping (JSON) -> Void, failure:@escaping (Error) -> Void) {
let imageData1 = UIImageJPEGRepresentation(image1, 0.5)!
let imageData2 = UIImageJPEGRepresentation(image2, 0.5)!
let imageData3 = UIImageJPEGRepresentation(image3, 0.5)!
let imageData4 = UIImageJPEGRepresentation(image4, 0.5)!

Alamofire.upload(multipartFormData: { multipartFormData in
for (key, value) in params! {
if let data = value.data(using: String.Encoding.utf8.rawValue) {
multipartFormData.append(data, withName: key)
}
}
//### Here "file" is the name of your image parameter ###//
multipartFormData.append(imageData1, withName: "file", fileName: "image.jpg", mimeType: "image/jpeg")
multipartFormData.append(imageData2, withName: "file", fileName: "image.jpg", mimeType: "image/jpeg")
multipartFormData.append(imageData3, withName: "file", fileName: "image.jpg", mimeType: "image/jpeg")
multipartFormData.append(imageData4, withName: "file", fileName: "image.jpg", mimeType: "image/jpeg")
},
to: K_BASEURL + K_API_LOGINDATA, encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload
.validate()
.responseJSON { response in
switch response.result {
case .success(let value):
print("responseObject: (value)")

let resp = JSON(response.result)
success(resp)
case .failure(let responseError):
print("responseError: (responseError)")
failure(responseError)
}
}
case .failure(let encodingError):
print("encodingError: (encodingError)")
}
})
}

在您的情况下,您可以循环浏览您的array。我的后端thumb[]检查,所以我将其命名为"thumb[]".您可以使用其他名称:

for thumbImg in thumbImagesArray {
multipartFormData.append(UIImageJPEGRepresentation(thumbImg as! UIImage, 1)!, withName: "thumbs[]", fileName: "thumbs.jpeg", mimeType: "image/jpeg")
}

最新更新