У меня возникла проблема с плагином передачи файлов, который я не могу понять. Мой код работает, когда я использую http, но когда я пытаюсь загрузить по https, кажется, что он не отправляет параметры в api, но он достигает моего api. только файл отсутствует, заголовок x-session-token присутствует и действителен. Это код, я использую для загрузки файла:Скачивание файла через https с помощью cordova filetransfer
$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 ответ:
{
"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": ""
}
Вы пропустили добавить 'http: //' или использовали его как 'https:/****/api.php/profielpic /', это должно быть 'https: // ****/api.php/profielpic/' –
есть ли у вас какие-либо ошибки? – jcesarmobile
nope, нет ошибок, я могу повторять заголовки, я получаю ответ. только параметры и изображение отсутствуют –