我在PHP 5.4(更具體地說,使用Yii Framework)上實現多部分請求,其中2參數是純文本,另一個是圖像文件。問題是,如果我用頭Content-Type: multipart/form-data
,當我的要求去做,我得到以下信息
內部服務器錯誤
未定義指數:myTextVar1
使用file_get_contents('php://input')
檢查服務器接收參數,我可以看到所有的信息已經到達。但是$ _POST和$ _FILES數組都是空的。
如果我刪除標頭Content-Type
,請求工作正常,$ _POST和$ _FILES數組被正確填充。我已經在Postman Chrome工具AngularJS和Android上嘗試過這種情況,每種情況都會發生。
我們在iOS上使用庫AFNetworking,它會自動添加Content-Type標頭,我們希望堅持它,而不是嘗試使用其他解決方案。
是否有任何可能的方法解決這個問題在PHP上,或者我們應該嘗試在iOS上使用替代庫?
編輯:iOS的請求代碼
[sessionManager POST:路徑參數:無 constructingBodyWithBlock:^(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(); }];
哪裏是你的代碼? –
'公共函數actionMyRequest(){!is_null($ _ POST [「myTextVar1」]){//已經在這裏崩潰 } } –
但是,不應該定義內容類型是否合乎邏輯?我覺得這個請求很有意思,不需要設置內容類型,但是告訴服務器是多部分的,會導致請求失敗。感謝您的答案無論如何:) –