我尝试使用Alamofire
(Link)(Swift 3.0)解决有关文件上传的问题,并使用Slim PHP
(Link)微框架检索服务器端。
我正在尝试使用
上传从iPhone拍摄的照片Alamofire.upload(multipartFormData:{
multipartFormData in
multipartFormData.append("value".data(/* ... */)!, withName :"key")
var idx = 1;
for imageRepresentation in imageData {
let pictureName = "pictures[]"
multipartFormData.append(imageRepresentation, withName: pictureName, mimeType: "image/jpeg")
idx += 1
}
},
to: uploadUrl,
method:.post,
headers: httpHeaders,
encodingCompletion: /* ... */
我几乎可以肯定这个脚本工作正常,因为当我点击https://httpbin.org/post
时,我会收到我上传的编码data base 64
图片,所以我很确定问题来了从我的服务器端代码。
所以,正如我所说,我正在使用 Slim PHP (Link)服务器端与此路由
$this->post('/upload', function ($request, $response, $args) {
$request->getParsedBody(); //null
$request->getQueryParams(); // []
$request->getBody(); // {}
$request->getUploadedFiles(); // []
return /*Some JSON */
})->setName('upload');
我错过了什么吗?有什么我不明白的吗? 我已经尝试了
最奇怪的是,当从Paw API Explorer
执行时,脚本就像魅力一样任何帮助都会非常感激!感谢。
答案 0 :(得分:0)
用于上传从照片库中选择的图像
在Swift 3和Alamofire 4中
以下是使用Alamofire
进行上传的完整实施方法将以下内容添加到ViewController类:
UIImagePickerControllerDelegate
和UINavigationControllerDelegate
创建一个按钮:
首先创建一个按钮并在其中实现以下方法以进行选择器视图
@IBAction func btnSelectProfileImageClicked(_ sender: Any) {
let ImagePicker = UIImagePickerController()
ImagePicker.delegate = self
ImagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary
self.present(ImagePicker, animated: true, completion: nil)
}
然后实现以下UIPicker方法:
func imagePickerController( _ picker: UIImagePickerController,didFinishPickingMediaWithInfo info:[String : Any] )
{Imgprofile.image = info[UIImagePickerControllerOriginalImage] as? UIImage
self.dismiss(animated: true, completion: nil)}
制作另一个按钮,使用Alamofire将数据传递到URL并向其提供@IBAction
个出口:
输入以下数据
@IBAction func btnUpdateProfileSelected(_ sender: Any) {
Alamofire.upload(multipartFormData: { (multipartFormData) in
multipartFormData.append(UIImageJPEGRepresentation(self.Imgprofile.image!, 1)!, withName: "Prescription", fileName: "Profile_Image.jpeg", mimeType: "image/jpeg")
}, to:" Your URL Here where You want to Upload")
{ (result) in
switch result {
case .success(let upload, _, _):
print(result)
upload.uploadProgress(closure: { (progress) in
print(progress)
})
upload.responseJSON { response in
//print response.result
print(response);
}
case .failure(let encodingError):
print(encodingError);
}
}
}
多数人
希望这会有所帮助
对于完整示例代码或有任何疑问,请发表评论。我会提供给你 这个示例代码。其中包括获取以及 使用Alamofire上传数据。
由于