Caricare un CSV in Codeigniter

Qualcun altro ha avuto problemi nel caricare un file csv in Codeigniter? Sto diventando abbastanza fastidioso “Il tipo di file che stai tentando di caricare non è consentito.” errore, anche se ho impostato in modo esplicito il tipo di caricamento. Ecco il mio codice (dovrebbe essere roba abbastanza standard):

function doUpload() { $config['upload_path'] = 'uploads/'; $config['allowed_types'] = 'text/plain|text/csv|csv'; $config['max_size'] = '5000'; $config['file_name'] = 'upload' . time(); $this->load->library('upload', $config); if(!$this->upload->do_upload()) echo $this->upload->display_errors(); else { $file_info = $this->upload->data(); $csvfilepath = "uploads/" . $file_info['file_name']; $this->addfromcsv($csvfilepath); } } 

Ho provato a coprire tutte le basi nei miei tipi consentiti – forse ne ho perso uno? Grazie per tutto l’aiuto!

Sfortunatamente non ci sono specifiche ufficiali, quindi ce ne sono un sacco: il più popolare tra quelli che mancano,

 text/comma-separated-values|application/csv|application/excel|application/vnd.ms-excel|application/vnd.msexcel|text/anytext 

È altamente improbabile che ne incontrerai un altro.

L’ho fatto lavorando aggiungendo i mimetypes suggeriti da cbrandolino a config / mimes.php (ottimo suggerimento jljohnstone ). Quindi la proprietà CSV dei miei $ Mimes sembra ora:

 'csv' => array('application/vnd.ms-excel', 'text/anytext', 'text/plain', 'text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel') 

Ho avuto lo stesso problema nel caricare file .csv. L’ho risolto determinando il tipo MIME usando il file -I file.csv nel terminale OS X. Ha riferito che il tipo mime era “text / plain”, quindi l’ho aggiunto al file config / mimes.php.

– Codeigniter 2.2.0

Ho eseguito un rapido debug sulla libreria Upload e ho scoperto che a volte lo stesso codice sorgente in esecuzione su server diversi identifica lo stesso file CSV con un diverso tipo di file (ad es. Server 1 identifica il file CSV come: application / vnd.ms- excel ma Server 2 identifica lo stesso file CSV come: text / xc) .

La mia correzione era di aggiungere, in application / config / mimes.php , il tipo di file identificato dal server dove si trovava il problema. Quindi, il mio array csv dal file mimes.php ha il seguente aspetto: 'csv' => array('application/vnd.ms-excel', 'text/anytext', 'text/plain', 'text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'text/x-c') .

Ho provato molte cose per caricare file CSV in codeigniter: –

aggiungo il tipo mime ( application / vnd.ms-excel ) al file di tipo mime, ma il problema medio è codeigniter accetterà solo file userfile . se imposterai il nome del file userfile allora funzionerà.

Penso che potrebbe esserci un altro modo ma non riesco a trovarlo.

prima nei tipi consentiti, digita semplicemente “csv”

  $config['allowed_types'] = 'csv'; $this->load->library('upload', $config); 

secondo andare a /config/mimes.php e cambiare l’elemento ‘csv’ come segue:

  'csv' => array( 'text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'text/plain' ),