上传文件,即使Alamofire并搭配修身PHP
问题描述:
我试图找回它的服务器端解决关于与Alamofire
(Link)文件上传(雨燕3.0)和检索它们使用Slim PHP
(Link)微架构的服务器端的问题。上传文件,即使Alamofire并搭配修身PHP
我试图上传使用
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: /* ... */
在这里,我几乎可以肯定,这个脚本是工作的罚款从iPhone拍摄照片,因为当我打https://httpbin.org/post
我回来了编码data base 64
像我已经上传,所以我很确定这个问题来自我的服务器端代码。
所以,正如我所说,我使用修身PHP(Link)服务器端使用这条路线
$this->post('/upload', function ($request, $response, $args) {
$request->getParsedBody(); //null
$request->getQueryParams(); // []
$request->getBody(); // {}
$request->getUploadedFiles(); // []
return /*Some JSON */
})->setName('upload');
我错过了什么?有什么我不明白的吗? 我已经尝试过
- Multipart/form-data example in slim micro framework
- https://akrabat.com/psr-7-file-uploads-in-slim-3/
而且最奇怪的是,从爪子API浏览器
任何帮助将是非常赞赏执行脚本时就像一个魅力!谢谢。
答
用于上传从照片库中选择图像
在斯威夫特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)}
使另一个按钮通过d ATA到URL使用Alamofire并给出一个
@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上传数据的 。
感谢
我已经知道了。 该问题位于Alamofire有关文件上传的“Content-type”上。 –