php body参数格式错误,php – 将图像文件变成body参数

我正在尝试将文件上传到服务器.我在后端代码中使用SlimFramework和

PHP,它采用REST形式.如果我通过邮递员上传图片上传功能非常好,但是我无法使用Swift和Alamofire库进行上传.

在我后端的路由,我得到这样的文件,从body参数:

$image = $request-> getUploadedFiles();

并上传我使用:

$图像 – >的moveTo( “mypath中”);

在Swift我有路由器,它给了.post方法和路由URL,我尝试这样:

func uploadImage(user_id: Int, image: Data, completion: @escaping (_ error: Error?, _ success: Bool)->Void) {

let parameters = [

"user_id": user_id,

"newFile": image

] as [String : Any]

Alamofire.request(Router.imageUplaod(parameters: parameters))

.validate(statusCode: 200..<300)

.responseJSON { response in

switch response.result{

case .failure(let error):

completion(error, false)

print(error)

case .success(let value):

//Registered sucesfully! let json = JSON(value)

completion(nil, true)

}//Switch case

}//Alamofire

}

我称之为:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

let chosenProfileImage = info[UIImagePickerControllerEditedImage] as! UIImage

let imageData = UIImageJPEGRepresentation(chosenProfileImage, 0.2)

profileImageView.image = chosenProfileImage

dismiss(animated: true) {

API.uploadImage(user_id: User.sharedInstance.user_id, image: imageData!) { (error, success) in

if success{

print("IMAGE UPLOADDED")

}

}

}

}

这是我的后端路线:

$this->post('/image/upload', function($request, $response, $args){

global $database;

$data = $request->getParsedBody();

$user_id = $data['user_id'];

$files = $request->getUploadedFiles();

if (empty($files['newfile'])) {

throw new Exception('Expected a newfile');

}

$newfile = $files['newfile'];

if ($newfile->getError() === UPLOAD_ERR_OK) {

$uploadFileName = "profileImage".$user_id.".jpg";

$newfile->moveTo("/path/to/image/$uploadFileName");

}

$database->query("UPDATE `users` SET `profile_image_url` = :image WHERE user_id = :user_id");

$database->bind(':image', $uploadFileName);

$database->bind(':user_id', $user_id);

$database->execute();

$Jsonarray['status'] = "true";

$Jsonarray['message'] = "Image Uploaded Successfully";

return $response->withStatus(200)->withHeader('Content-Type', 'application/json')->write(json_encode($Jsonarray));

});

奇怪的是,Alamofire输出状态代码500,但服务器并不告诉我什么.问题必须在Swift部分.所以我甚至不知道如何调试它.

我该如何解决问题?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值