我正在 PHP 5.4 上实现一个多部分请求(更具体地说,使用 Yii 框架),其中 2 个参数是纯文本,另一个是图像文件。问题是,如果我使用 header Content-Type: multipart/form-data
,当我发出请求时,我会收到以下消息
内部服务器错误
未定义索引:myTextVar1
用于file_get_contents('php://input')
检查服务器是否接收到参数,可以看到所有信息都到了。但是 $_POST 和 $_FILES 数组都是空的。
如果我删除 header Content-Type
,请求工作正常, $_POST 和 $_FILES 数组被正确填充。我已经在 Postman Chrome 工具、AngularJS 和 Android 上尝试过,在每种情况下都发生了相同的情况。
我们在 iOS 上使用库 AFNetworking,它会自动添加 Content-Type 标头,我们希望坚持使用它而不是尝试使用其他解决方案。
有没有办法在 PHP 上解决这个问题,或者我们应该尝试在 iOS 上使用替代库?
编辑: iOS 请求的代码
[sessionManager POST:路径参数:无构造BodyWithBlock:^(id formData){
[formData appendPartWithFormData:[myTextVar1 dataUsingEncoding:NSUTF8StringEncoding] name:@"myTextVar1"]; [formData appendPartWithFormData:[myTextVar2 dataUsingEncoding:NSUTF8StringEncoding] name:@"myTextVar2"]; [formData appendPartWithFileData:dataToUpload name:@"imageAnswer" fileName:@"image.jpg" mimeType:@"image/jpeg"]; } success:^(NSURLSessionDataTask *task, id responseObject) { successBlock(); } failure:^(NSURLSessionDataTask *task, NSError *error) { failureBlock(); }];