2016-07-19 4 views
0

Ich habe vor kurzem mehrere Dateien hochladen (Xml), ich bin Erfolg auf diesem Teil. Aber ich habe ein Problem, wenn ich die full_path bekommen möchte. Ich muss auf die full_path zugreifen, weil ich dies brauche, um die XML-Datei zu speichern.Holen Sie sich Dateicodeigniter Upload-Datei

Hier ist, was ich nach dem Upload bekomme.

$file = $this->upload->data('full_path'); 
echo "<pre>"; print_r($file); 

Array 
(
    [0] => Array 
     (
      [file_name] => SALESPOS_K-LFJBLP_16-07-1410.xml 
      [file_type] => text/xml 
      [file_path] => D:/xampp/htdocs/new_store/assets/file_upload/sales_pos/ 
      [full_path] => D:/xampp/htdocs/new_store/assets/file_upload/sales_pos/SALESPOS_K-LFJBLP_16-07-1410.xml 
      [raw_name] => SALESPOS_K-LFJBLP_16-07-1410 
      [orig_name] => SALESPOS_K-LFJBLP_16-07-14.xml 
      [client_name] => SALESPOS_K-LFJBLP_16-07-14.xml 
      [file_ext] => .xml 
      [file_size] => 93.38 

     ) 

    [1] => Array 
     (
      [file_name] => SALESPOS_K-LFJBLP_16-07-1310.xml 
      [file_type] => text/xml 
      [file_path] => D:/xampp/htdocs/new_store/assets/file_upload/sales_pos/ 
      [full_path] => D:/xampp/htdocs/new_store/assets/file_upload/sales_pos/SALESPOS_K-LFJBLP_16-07-1310.xml 
      [raw_name] => SALESPOS_K-LFJBLP_16-07-1310 
      [orig_name] => SALESPOS_K-LFJBLP_16-07-13.xml 
      [client_name] => SALESPOS_K-LFJBLP_16-07-13.xml 
      [file_ext] => .xml 
      [file_size] => 47.43 
     ) 
) 

und hier ist für meine XML

$file = $this->upload->data('full_path'); ; 
$xml=simplexml_load_file($file); 

handhaben, und ich bekomme diese Fehlermeldung

Message: simplexml_load_file() expects parameter 1 to be a valid path, array given 
+0

ja, weil $ Dateiname nicht die Datei-Array ist. –

+1

gibt es mehrere Uploads. Daher müssen mehrere Dateipfade vorhanden sein. Loop es über 'foreach' oder' for' Schleife –

Antwort

1

dieses Versuchen

$xml   = array(); 
$data = $this->upload->data(); 
for($x = 0;$x<count($data);$x++) 
    { 
     $xml[]=simplexml_load_file($data[$x]['full_path']); 
    } 
echo "<pre>";print_r($xml); 
1

Einfache Tippfehler Ich denke,

Änderung dieses:

$file = $this->upload->data('full_path'); ; 

dazu:

$file = $this->upload->data('full_path'); 

oder Sie können versuchen:

$data = $this->upload->data(); 
$file = $data['full_path']; 
$xml=simplexml_load_file($file); 

für mehrere Upload:

foreach($file as $each) 
{ 
$xml=simplexml_load_file($each['full_path']); 
} 
+0

was ist der Grund für den obigen Code wird funktionieren? –

+0

zu viele ";". Sieht so aus, als wäre es ein Tippfehler. Und die Codeigniter-Upload-Bibliothek gibt ein Array aus der Methodendaten() zurück. ['vollständiger_Pfad'] ist ein Index dieses Arrays. Was Ihren Code betrifft, sind die Daten, die Sie erhalten, ein eigenes Array für mehrere Dateien. Verwenden Sie also foreach loop, um das Array zu loopen. –

+0

Das wird kein Problem sein. Probieren Sie es zuerst aus A gut in dieser Zeile '$ data = $ this-> upload-> data();' Sie erhalten *** ERROR * Array zu String-Konvertierung ** –

0

$ file ist ein Array nicht die Datei. Mach das so.

foreach($file as $file_val){ 
    $file_path = $file_val['full_path']; 
    $xml=simplexml_load_file($file_path); 
}