На данный момент мы используем форму для создания файла CSV для загрузки и сохранения локально. Затем используйте вторую форму, чтобы загрузить файл и отправить его на другую страницуСоздайте переменную файла CSV и POST на другую страницу
PHP для создания CSV
$var1 = $_POST["var1"];
$var1 = $_POST["var2"];
header('Content-type: text/csv');
header('Content-Disposition: attachment; filename="tmog.csv"');
echo $var.",".$var2."\n";
HTML формы для создания CSV
<form action="./functions/csv.php" method="post" target="_blank">
<h4 class="text"> Create CSV</h4>
<div class="form-group"><input type="text" class="form-control" name="var1" placeholder="Var1"></div>
<div class="form-group">
<select name='var2' class='form-control'>
<option value='' selected disabled>Select Plan</option>
<option value='Test'>Test</option>
<option value='Test1'>Test1</option>
</select>
</div>
<div class="form-group"><button class="btn btn-warning btn-block" type="submit">Give me CSV</button></div>
</form>
Второй формой для загрузки файла CSV и разместить на другой странице
<form enctype='multipart/form-data' method='POST' action='other_page.cgi' target='rumba_output'>
<label id='file_browse_indicator'>CSV file:</label>
<input name='csv_file' type='file' value='' id='file_browse'>
<button name='action' value='submit' id='submit_button' onClick='this.form.submit()'>Go!</button>
</form>
Во всяком случае то, что я пытаюсь сделать, это пропустить:
- Введите значения
- Скачать> Сохранить
- Загрузить> Отправить
В идеале я хотел бы просто:
- Введите значения> отправить
Так далеко я попытался написать csv to temp, используя php (Like in this article), а затем POST его с помощью cURL, но я обнаружил, что у меня нет доступа к cURL на нашем сервере.
Это PHP, который я полоснул вместе
$var1 = $_POST["var1"];
$var2 = $_POST["var2"];
$fd = fopen('php://temp/maxmemory:1048576', 'w');
if($fd === FALSE) {
die('Failed to open temporary file');
}
$values = array($var1, $var2);
fputcsv($fd, $values);
rewind($fd);
$csv = stream_get_contents($fd);
fclose($fd);
//post to other_page.cgi
$url = 'http://domain.com/other_page.cgi';
$fields = array('csv_file' => $csv);
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
$result = curl_exec($ch);
curl_close($ch);
Очевидно, что я не имею большое понимание этого, но любая помощь была бы оценена
Удивительный! спасибо, я прочитаю об этом. Кажется ли, что часть кода CSV в коде будет работать? –
Мне непонятно, почему вы пишете только одну строку в CSV-файл. CSV, если формат, который хранит список сгруппированных значений, разделенных запятой, но в вашем примере я вижу только две переменные в одной строке. Итак, в чем причина использования CSV? Это похоже на создание таблицы Excel с двумя словами в одной строке - бессмысленной идеей (лучше использовать текстовый файл, если у вас всего несколько символов, все в одной строке). –
Хорошо, что other_page.cgi принимает только файл csv, и у меня нет никакого контроля на всем этом сервере. Так что это заставляет меня использовать этот формат, к сожалению –