创建一个CSV文件变量并POST到另一个页面

时间:2015-04-26 23:33:03

标签: javascript php html csv

目前我们使用表单创建CSV文件以便在本地下载和保存。然后使用第二个表单上传文件并将其发布到另一个页面

PHP创建CSV

$var1 = $_POST["var1"];
$var1 = $_POST["var2"];

header('Content-type: text/csv');
header('Content-Disposition: attachment; filename="tmog.csv"');
echo $var.",".$var2."\n";

用于创建CSV的HTML表单

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

无论如何,我试图做的是跳过:

  • 输入值
  • 下载&gt;保存
  • 上传&gt;提交

理想情况下,我想:

  • 输入值&gt;提交

到目前为止,我已尝试使用php(Like in this article)将csv写入temp,然后使用cURL对其进行POST,但我发现我无法访问服务器上的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);

显然我对此没有很好的理解,但是非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

在您的情况下,

cURL将是一个很好的解决方案。在您的服务器上禁用cURL是非常奇怪的,它很普遍。尝试启用或安装。

但是,除了cURL之外,PHP还有其他方式来POST数据(文件)。

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