2016-07-19 2 views
0

私は最近複数のファイル(xml)をアップロードしています。私はこの部分で成功です。しかし、私はfull_pathを取得したいときに問題があります。 full_pathにアクセスする必要があります。これはxmlファイルを保存するために必要なためです。ファイルcodeigniterアップロードファイルを取得

ここはアップロード後に得られるものです。

$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 
     ) 
) 

とここに私のXMLは

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

を扱うためのもので、私はこの

の変化を推測

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

はいを​​試してみてください。 –

+1

複数のアップロードがあります。そのため、複数のファイルパスが必要です。 'foreach'または' for'ループでループしてください。 –

答えて

1

$ファイルは、ファイル名の配列ではありませんので、この

$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

単純なタイプミスを、このエラーが出る:

$file = $this->upload->data('full_path'); ; 
を これに

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

またはあなたが試すことができます:

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

複数アップロード:

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

上記のコードの理由は何でしょうか? –

+0

";"が多すぎます。入力エラーと思われます。 codeigniterアップロードライブラリは、メソッドdata()から配列を返します。 ['full_path']はその配列のインデックスです。あなたのコードでは、取得するデータは複数のファイルのためのアーリー自体であり、foreachループを使って配列をループするだけです。 –

+0

これは問題ではありません。最初に試してみてください '$ data = $ this-> upload-> data();'あなたは*** ERROR *配列を文字列に変換します** –

0

$ファイルが配列ではないファイルです。このようにしてください。

foreach($file as $file_val){ 
    $file_path = $file_val['full_path']; 
    $xml=simplexml_load_file($file_path); 
} 
関連する問題