2015-03-17 4 views
1

У меня возникла проблема с плагином передачи файлов, который я не могу понять. Мой код работает, когда я использую 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": "" 
} 
+0

Вы пропустили добавить 'http: //' или использовали его как 'https:/****/api.php/profielpic /', это должно быть 'https: // ****/api.php/profielpic/' –

+0

есть ли у вас какие-либо ошибки? – jcesarmobile

+0

nope, нет ошибок, я могу повторять заголовки, я получаю ответ. только параметры и изображение отсутствуют –

ответ

1

Убедитесь, что вы используете правильный SSL сертификат. Если ваше приложение достигает API, но не отправляет данные, вероятно, ваше приложение осознает, что соединение небезопасно. Он будет отправлять данные только после установления безопасного соединения с сервером, которому он может доверять.

Самостоятельно подписанный сертификат будет не можно доверять.

+1

Да, я знаю, но я добавил, что могу доверять 'trustAllHosts \t Boolean \t Если установлено значение true - принимает все сертификаты безопасности –

+0

@SjoerdDeWit Я предполагаю, что если что-то пошло не так, будет вызываться блок ошибок. Какая информация содержит переменную ошибки? – FMC

+0

блок ошибки не вызван, он успешно отправляет байты, я просто не могу их прочитать на моем api –

Смежные вопросы