En mi proyecto, tomo el archivo de una entrada de archivo html (en un modal), luego lo paso con ajax a php y con la supervariable $_FILE obtengo su contenido:
el modal
<form id="form_admin_panel_import" enctype="multipart/form-data" method="post"> <input type="file" class="form-control" name="usersFile" id="usersFile"> <button type="submit" class="btn btn-primary" id="buttonAction">Import </button> </form>Js y Ajax
$( "#form_admin_panel_import" ).submit(function( event ) { event.preventDefault(); var fd = new FormData(this); $.ajax({ url: (URL + "managementUsers/importUsers"), type: "POST", data: fd , processData: false, contentType: false, success: function (result) { console.log(result); } }); });php
if ( 0 < $_FILES['usersFile']['error'] ) { echo 'Error: ' . $_FILES['usersFile']['error'] . '<br>'; } else { if (($handle = fopen($_FILES['usersFile']['tmp_name'], "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) { $firstName = $data[0]; } }El problema es que cuando tengo caracteres especiales en el archivo csv, el php recibe un ? char y no puedo volver al char original. Creo que tengo que usar un encabezado UTF8 pero no sé dónde...