2015-04-26 1 views
0

На данный момент мы используем форму для создания файла 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">&nbsp;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); 

Очевидно, что я не имею большое понимание этого, но любая помощь была бы оценена

ответ

0

Curl будет хорошим решением в вашем случае , Очень странно, что cURL отключен на вашем сервере, он широко распространен. Попробуйте включить его или установить.

Однако, есть другие способы в PHP для POST-данных (файлы также), кроме cURL.

1) Подробнее о stream_context_create функция. Кроме того, может быть, эта ссылка будет полезна:

http://board.phpbuilder.com/showthread.php?10372972-RESOLVED-can-I-upload-a-file-using-file_get_contents&s=a1392ce2e27e37513ce9ec62562a3ff0&p=10950863&viewfull=1#post10950863

2) Я использую HttpRequest в своих проектах и ​​найти его очень полезным. Вы можете прочитать больше в официальной документации: http://php.net/manual/en/class.httprequest.php

+0

Удивительный! спасибо, я прочитаю об этом. Кажется ли, что часть кода CSV в коде будет работать? –

+0

Мне непонятно, почему вы пишете только одну строку в CSV-файл. CSV, если формат, который хранит список сгруппированных значений, разделенных запятой, но в вашем примере я вижу только две переменные в одной строке. Итак, в чем причина использования CSV? Это похоже на создание таблицы Excel с двумя словами в одной строке - бессмысленной идеей (лучше использовать текстовый файл, если у вас всего несколько символов, все в одной строке). –

+0

Хорошо, что other_page.cgi принимает только файл csv, и у меня нет никакого контроля на всем этом сервере. Так что это заставляет меня использовать этот формат, к сожалению –

Смежные вопросы