Quiero publicar un archivo csv en mi controlador usando API.Estoy usando Codeigniter REST Library por phil sturgeon. Cómo implementar en el lado del cliente la importación de CSV a mi servidor REST. Solo quiero preguntar porque no puedo encontrar ninguna documentación al respecto.Codeigniter REST CSV import to mysql
Respuesta
Aquí hay una manera fácil de hacerlo. No sé lo que hace la gente pero utilizo esto
Esta es mi biblioteca de lectores csv, guárdela en la carpeta de bibliotecas como csvreader.php.
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class CSVReader {
var $fields; /** columns names retrieved after parsing */
var $separator = ';'; /** separator used to explode each line */
var $enclosure = '"'; /** enclosure used to decorate each field */
var $max_row_size = 4096; /** maximum row size to be used for decoding */
function parse_file($p_Filepath)
{
$file = fopen($p_Filepath, 'r');
$this->fields = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure);
$keys_values = explode(',',$this->fields[0]);
$content = array();
$keys = $this->escape_string($keys_values);
$i = 1;
while(($row = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure)) != false)
{
if($row != null) { // skip empty lines
$values = explode(',',$row[0]);
if(count($keys) == count($values)){
$arr = array();
$new_values = array();
$new_values = $this->escape_string($values);
for($j=0;$j<count($keys);$j++){
if($keys[$j] != ""){
$arr[$keys[$j]] = $new_values[$j];
}
}
$content[$i] = $arr;
$i++;
}
}
}
fclose($file);
return $content;
}
function escape_string($data)
{
$result = array();
foreach($data as $row){
$result[] = str_replace('"', '',$row);
}
return $result;
}
}
?>
y el método controlador
function readExcel()
{
$this->load->library('csvreader');
$result = $this->csvreader->parse_file('Test.csv');//path to csv file
$data['csvData'] = $result;
$this->load->view('view_csv', $data);
}
Y esto es vista
<table cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width = "10%">ID</td>
<td width = "20%">NAME</td>
<td width = "20%">SHORT DESCRIPTION</td>
<td width = "30%">LONG DESCRIPTION</td>
<td width = "10%">STATUS</td>
<td width = "10%">PARENTID</td>
</tr>
<?php foreach($csvData as $field){?>
<tr>
<td><?php echo $field['id']?></td>
<td><?php echo $field['name']?></td>
<td><?php echo $field['shortdesc']?></td>
<td><?php echo $field['longdesc']?></td>
<td><?php echo $field['status']?></td>
<td><?php echo $field['parentid']?></td>
</tr>
<?php }?>
</table>
Nota: Esto sólo va a leer un archivo que existe en el servidor. Si es necesario cargar el archivo, use File Upload Class para cargar el archivo y guárdelo en alguna ubicación en su servidor, luego proporcione la ruta del archivo ubicado en el método parse_file
. Y todo funcionará bien.
Gracias, lo intentaré. Solo necesito los datos para extraerlos y pasarlos al modelo. –
puede pasar la matriz devuelta al modelo –
cómo si mis campos csv sin $ enclosure '"'? Devuelven error si puse $ enclosure = ''; –
- 1. C# Dictionary to .csv
- 2. Autenticación REST en PHP (CodeIgniter)
- 3. AFNetworking POST to REST webservice
- 4. cómo hacer que phpMyAdmin import datetime correctamente desde csv?
- 5. Carga de un csv en Codeigniter
- 6. Cargar datos CSV en MySQL en Python
- 7. Importación de datos CSV usando PHP/MySQL
- 8. CSV vs MySQL rendimiento
- 9. Importar CSV a MySQL
- 10. Clojure import versus import
- 11. Mail to MySQL Database
- 12. MYSQL - datetime to seconds
- 13. Java long to Mysql
- 14. CodeIgniter MySQL consulta no trabaja
- 15. Codeigniter, crear tablas y usuarios para MySQL
- 16. CodeIgniter REST API Library Ajax PUT throwing 403 Forbidden
- 17. MySQL importar datos CSV - ignorar algunas columnas csv
- 18. ¿Importación csv de PostgreSQL desde una exportación csv de MySQL?
- 19. MySQL REGEXP to SQL Server
- 20. Bash time to mysql datetime
- 21. MySQL Many-To-Many Select
- 22. String to timestamp en mysql
- 23. connect to mysql using C++
- 24. ¿Debo usar `import os.path` o` import os`?
- 25. `#import" FBConnect.h "` vs. '#import "FBConnect/FBConnect.h"'
- 26. CodeIgniter/PHP/MySQL: Recuperar datos con JOIN
- 27. Push to Firebase a través de API REST con Prioridad
- 28. Carga de archivos CSV en MySQL Workbench
- 29. MySQL carga valores NULL de datos CSV
- 30. : import com.google.android.maps. *;
No tiene suficiente claridad con la pregunta. Codeigniter REST es casi lo mismo que Codeigniter normal, pero la diferencia es simplemente llamar al método y la respuesta. En codeigniter normal llamamos a 'controller/function' donde en REST debe ser 'resource/{resource_id}/child_resource/{child_resource_id}'. no creo que haya ningún problema para enviar los encabezados como archivo '.xls' – KuKu
clemente y en palabras simples díganos lo que quiere –
@raheelshan Quiero publicar un archivo csv en mi controlador usando la API del lado del cliente por jquery.post y extrae los datos del archivo csv e importa a mysql. –