Member 14003868 Ответов: 1

CSV to XML - когда файл data.csv находится вне папки, то XML-import.xml файл сохранения пуст


Когда я переместил "data.csv" в другое место, он не будет сохранять " xml-import.xml-на моем компьютере. Код работает только в том случае, если CSV-файл "data.csv" находится в той же папке, что и convert.php (имя моего PHP-скрипта) но если вы переместили файл data.csv в другое место, то 'xml-import.xml-мы не спасены.

Все, что мне нужно, это даже если вы переместите файлы data.csv из другого места 'xml-import.xml-тоже экономь. Разве это возможно?

Что я уже пробовал:

<form action="" method="POST">
<input id="my-file-selector" type="file" name="fname" value="Choose File to Upload">
<input class="btn btn-warning" type="submit" name="submit" value="CONVERT" >
</form>

<?php
error_reporting(0);
if(isset($_POST['fname'])){
$value = $_POST['fname'];
}

//$rows = array_map('str_getcsv', file('./PATH/$value'));
$rows = array_map('str_getcsv', file($value));
$header = array_shift($rows);
$data = array();
foreach ($rows as $row)
{
    $data[] = array_combine($header, $row);
}
foreach($data AS $key => $val)
{
}
$xml = new DomDocument('1.0', 'UTF-8'); 
$root = $xml->createElement('root');
$xml->appendChild($root);
foreach($data AS $key => $val) 
{ 
    $entry = $xml->createElement('entry');
    $root->appendChild($entry);
    foreach($val AS $field_name => $field_value) 
    { 
        $field_name = preg_replace("/[^A-Za-z0-9]/", '', $field_name);
        $name = $entry->appendChild($xml->createElement($field_name)); 
        $name->appendChild($xml->createCDATASection($field_value)); 
    }
}
$xml->formatOutput = true; 
$xml->save('xml-import.xml');
?>

Richard MacCutchan

Вам необходимо убедиться, что вы указали полный путь к файлу, если он не находится в текущем (для PHP) рабочем каталоге.

Member 14003868

сэр, не могли бы вы помочь мне, как пройти полный путь? мой php скрипт convert.php загружается на сервер, но data.csv находится на моем локальном компьютере отдельно. можно ли получить путь с моего локального компьютера? потому что мой php скрипт convert.php загружается на сервер..

Richard MacCutchan

Вы не можете получить доступ к файлу на клиенте непосредственно с сервера. Вам нужно сначала загрузить файл на сервер, чтобы обработать его.

1 Ответов

Рейтинг:
12

Richard Deeming

PHP: POST method uploads - руководство пользователя[^]
Загрузка файла PHP 5[^]

Вы пытаетесь открыть файл с учетом его пути на клиенте Вам нужно открыть файл, используя временный путь на сервере где был сохранен загруженный файл.

Заменять:

if(isset($_POST['fname'])){
    $value = $_POST['fname'];
}
с:
$value = $_FILES["fname"]["tmp_name"];


Member 14003868

Нужна помощь, сэр, я хочу автоматически загружать файлы формата XML с моего компьютера или в папке Загрузки внутри.. Теперь его единственное сохранение в моем рабочем каталоге xml-преобразованный файл, возможно ли автоматически загрузить save после преобразования в XML?