【问题标题】:PHP upload csv file into array to serverPHP将csv文件上传到数组到服务器
【发布时间】:2016-02-05 14:38:24
【问题描述】:

我正在尝试使用我的 php 脚本上传 csv 文件,但似乎只有第一行被发送到服务器。我尝试了几种解决方案,例如将 q loop while 但都没有while(! feof($handle)){ $data=fgetcsv($handle, 1000, ","); ...} 但它崩溃了。

如果其他人可以帮助我。 谢谢。

这是我的 php 脚本

<?php
$URL = 'https://mutalyzer.nl/services/?wsdl';
?><!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Mutalyzer SOAP client</title>
</head>
<body>
<h1>Mutalyzer SOAP client</h1>
<?php
if (isset($_GET['data']) && $_GET['data']) {
    echo $_GET['data'];
    $variant = $_GET['data'];
    echo $variant;
    //$filename = basename($_FILES['data']['name']);
    $_FILES['data']['name']=$_GET['data'];
    $filename = basename( $_FILES['data']['name']);

    $handle = fopen($filename, "r");
    $data = fgetcsv($handle, 1000, ",");

    /*while(! feof($handle)){
    $data = fgetcsv($handle, 1000, ",");
    //print_r($data);
    }*/
    //$encripData = base64_encode($variant);

    $NameChecker=$_GET['process'];
    echo '<h2>Result for '.htmlentities($variant).'</h2>';

   $options = array('features' => SOAP_SINGLE_ELEMENT_ARRAYS);

    $client = new SoapClient($URL, $options);
//while(! feof($handle)){
//$data=fgetcsv($handle, 1000, ",");
    $result = $client->submitBatchJob(array('data' => $data[0], 'process' =>$NameChecker))
                  ->submitBatchJobResult;
               //print_r(array('data' => $data, 'process' =>$NameChecker));
//}

print_r($result);
}

?>

<h2>Submit job data file to MUTALYZER</h2>

<form action="" method="GET" enctype="multipart/form-data">
<p>
Input file:
</p>
<input name="data" type="file" id="data" />
<br/>
  Process :
<input type="text" size="10" name="process" id="process" value="NameChecker"/>
<br/>
  <input type="submit" name="upload" value="Submit" />
</form>

</body>
</html>

【问题讨论】:

  • 您能否详细说明您遇到的错误以及您正在调用的服务的 WSDL?只是猜测 - $result = $client-&gt;submitBatchJob(array('data' =&gt; $data[0], 'process' =&gt;$NameChecker))-&gt;submitBatchJobResult; 中的 $data[0] 值不是问题(也许它必须是 $data)?
  • @MilanTomeš,嗨,我将 $data[0] 更改为 $data 我有以下错误:codeUse of undefined constant SOAP_SINGLE_ELEMENT_ARRAYS - 假定为 'SOAP_SINGLE_ELEMENT_ARRAYS'``code` 并且: code致命错误:未捕获错误:在 C:\xampp\htdocs\ngs\submit.php:34 中找不到类 'SoapClient' 堆栈跟踪:#0 {main} throwcode

标签: php arrays csv soap upload


【解决方案1】:

尝试这样,下面的代码可以工作..

   <?php 
    // sample_file.csv file contains 35 rows.
    $row = 1; 
    $csv_array = array(); 
     if (($handle = fopen("C:\Users\develop2\Downloads\sample_file.csv", "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
            $csv_array[] = $data;
        }
        fclose($handle);
    }
    // here u can get the data in csv as an array with fulll rows..
    print_r($csv_array);
    ?>

【讨论】:

  • 嗨,Venkatesh Mani,我尝试使用您的代码,但服务器回复:Use of undefined constant SOAP_SINGLE_ELEMENT_ARRAYS - assumed 'SOAP_SINGLE_ELEMENT_ARRAYS'
  • 嗨,我已经检查了你的链接。我的 SOAP 已激活。事情,提交时它总是只需要我数组中的第一个元素。
【解决方案2】:

我修改了我的源代码。我唯一的问题是服务器只获取我阵列的最后一行。我正在做一些不好的事情,但我不知道。这是我的新源代码:

<?php
$URL = 'https://mutalyzer.nl/services/?wsdl';
?><!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Mutalyzer SOAP client</title>
</head>
<body>
<h1>Mutalyzer SOAP client</h1>
<?php
if (isset($_GET['data']) && $_GET['data']) {

    $variant = $_GET['data'];


    $_FILES['data']['name']=$_GET['data'];
    $filename = basename( $_FILES['data']['name']);
    $handle = fopen($filename, "r");
    //$data = fgetcsv($handle, 1000, ",");


    $NameChecker=$_GET['process'];
    echo '<h2>Result for '.htmlentities($variant).'</h2>';

   $options = array('features' => SOAP_SINGLE_ELEMENT_ARRAYS);

    $client = new SoapClient($URL, $options);
$data=array();
while(! feof($handle)){
    $data = fgetcsv($handle, 1000);

    $result = $client->submitBatchJob(array('data' => $data[0], 'process' =>$NameChecker))
                  ->submitBatchJobResult;
               print_r(array('data' => $data, 'process' =>$NameChecker));
            }  
print_r($result); 
}

?>

<h2>Submit job data file to MUTALYZER</h2>

<form action="" method="GET" enctype="multipart/form-data">
<p>
Input file:
</p>
<input name="data" type="file" id="data" />
<br/>
  Process :
<input type="text" size="10" name="process" id="process" value="NameChecker"/>
<br/>
  <input type="submit" name="upload" value="Submit" />
</form>

</body>
</html>

【讨论】:

    猜你喜欢
    • 2014-01-12
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 2019-11-18
    • 2021-02-03
    • 1970-01-01
    相关资源
    最近更新 更多