У меня проблема с плагином переноса файлов, который я не могу понять. Мой код работает, когда я использую http, но когда я пытаюсь загрузить по https, кажется, что он не отправляет параметры в api, но он достигает моего api. только файл отсутствует, заголовок x-session-token присутствует и действителен. Это код, который я использую для загрузки файла:
$scope.options = {}; $scope.options.fileKey = "file"; $scope.options.fileName = $scope.img.substr($scope.img.lastIndexOf('/') + 1); $scope.options.mimeType = "image/jpeg"; $scope.options.headers = { 'x-session-token' : window.localStorage.auth }; // parameters: source, filePath, options $cordovaFile.uploadFile("https:/****/api.php/profielpic/", $scope.img, $scope.options, true).then(function(result) { console.log(result); $cordovaToast.showShortTop('Uploaden gelukt!').then(function(success) { $ionicLoading.hide(); $state.go('tab.profiel'); }, function (error) { $ionicLoading.hide(); $state.go('tab.profiel'); }); }, function(err) { console.log(err); $ionicLoading.hide(); });
Это код, который я использую на стороне сервера, чтобы узнать, есть ли что-либо:
$app->post('/profielpic/', function () use ($app) { $auth = new api\src\Auth; $users = new api\src\Users; $authdata = json_decode($app->request->headers->get('x-session-token')); $data = json_decode($app->request->getBody()); $userid = $authdata->userID ; $session_token = $authdata->session_token; $userdata = $data->userdata; $alertsarray = array(); $message = null; $isValid = true; $authresult = $auth->authenticate($userid, $session_token); $imgname = time(); print_r(json_encode($authdata)); print_r(json_encode($_FILES)); print_r(json_encode($_POST)); print_r(json_encode($data)); print_r(json_encode(file_get_contents("php://input"))); /* if($authresult === true) { $res = $users->updateUserPicture($userid, $_FILES['file']); if($res === false) { $isValid = false; $message = "Er ging iets mis."; }else{ $message = $res; } }else { $isValid = true; $message = $authresult; }*/ $dataArray = array( 'isValid' => $isValid, 'message' => $message ); echo ")]}',\n".json_encode($dataArray);
});
но все пустое с https: // если я загружаю на http: // он работает
Кто-нибудь знает, почему работает http, но https не работает? единственный случай, когда https не работает, – это загрузка файлов. остальные мои маршруты api работают с https.
Это происходит на устройствах iOS и устройствах Android, поэтому проблема скорее всего будет с тонким api, я думаю
Ответ Api:
{ "bytesSent": 32889, "responseCode": 200, "response": "{\"userID\":\"2\",\"session_token\":\"****" } {\ "file\":{\"name\":\"modified.jpg?1427448587960\",\"type\":\"image\\/jpeg\",\"tmp_name\":\"\\/tmp\\/phpABKyF2\",\"error\":0,\"size\":37491}}[]null\"\")]}',\n{\"isValid\":true,\"message\":null}", "objectId": "" }
Убедитесь, что вы используете действительный сертификат SSL. Если ваше приложение достигает API, но не отправляет данные, вероятно, ваше приложение осознает, что соединение небезопасно. Он будет отправлять данные только после установления безопасного соединения с сервером, которому он может доверять.
Самостоятельному сертификату не будет доверено.