php
  • arrays
  • csv
  • soap
  • upload
  • 2016-02-05 95 views 0 likes 
    0

    我想用我的php脚本上传一个csv文件,但似乎只有第一行被发送到服务器。我尝试了几个解决方案,因为把q循环,但都不while(! feof($handle)){ $data=fgetcsv($handle, 1000, ","); ...},但它崩溃。PHP将csv文件上传到服务器阵列

    如果有人能帮助我。 谢谢。

    这里我的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> 
    
    +0

    你能提供详细信息你得到的错误和你打的服务的WSDL?只是猜测 - 在'$ result = $ client-> submitBatchJob(array('data'=> $ data [0],'process'=> $ NameChecker)中的'$ data [0]'值中不存在问题。 - > submitBatchJobResult;'(也许它必须是'$ data')? –

    +0

    @MilanTomeš,嗨,我做了$ data [0]到$ data的更改我有这些错误:'code'使用未定义的常量SOAP_SINGLE_ELEMENT_ARRAYS - 假定'SOAP_SINGLE_ELEMENT_ARRAYS''code'还有:'code'Fatal error:Uncaught错误:在C:\ xampp \ htdocs \ ngs \ submit.php中找不到类'SoapClient':34堆栈跟踪:#0 {main}抛出的代码' – user979974

    回答

    0

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

    <?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); 
        ?> 
    
    +0

    嗨,Venkatesh Mani,我试图使用您的代码,但服务器响应︰使用未定义的常量SOAP_SINGLE_ELEMENT_ARRAYS - 假设'SOAP_SINGLE_ELEMENT_ARRAYS'' – user979974

    +0

    请参阅此链接https://developer.salesforce.com/forums/?id=906F00000008tKkIAI –

    +0

    嗨,我已经检查过你的链接。我的SOAP被激活。东西,它提交时总是只有我的数组中的第一个元素。 – user979974

    0

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

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

     相关问题

    • 暂无相关问题^_^