Isso é para um serviço da web PHP que recebe uma das duas cargas úteis POST:
- Um HTTP POST padrão (multipart / form-data)
- Um POST de dados JSON (aplicativo de tipo de conteúdo / json)
No segundo caso, as imagens são enviadas como strings codificadas em base64. O código a seguir remove os metadados do início do arquivo e cria um arquivo temporário para substituí-lo na matriz $ _FILES .
Nesse caso específico, todos os dados JSON estavam sendo enviados de um serviço da Web Python remoto, portanto, a verificação do agente do usuário foi adaptada de maneira adequada.
if(strstr($_SERVER['HTTP_USER_AGENT'], 'CPython')!==false) {
$data = file_get_contents($_FILES['upfile']['tmp_name']);
// Strip the meta-data from the start of the file
// This is added when base64-encoding the data
$data = substr($data, strpos($data, ','), strlen($data));
$data = base64_decode($data);
$temp = tempnam("/tmp", "img_");
file_put_contents($temp, $data);
$_FILES['upfile']['tmp_name'] = $temp;
}
Nós reatribuímos o valor de $ _FILES [‘upfile’] [‘tmp_name’] para tratamento futuro.
NB
Quando você move o arquivo, você precisa usar rename () no lugar de move_uploaded_file () já que não é mais um arquivo carregado .
if(!rename($temp, $new_filename)) {
unlink($temp); // clean up
$app->halt(500, 'Internal Server Error. ' . $temp . ' ' . $new_filename);
}