PHP csv上传可以在mac上运行,但不能在windows上运行

PHP csv上传可以在mac上运行,但不能在windows上运行,php,wordpress,csv,Php,Wordpress,Csv,我有一个用于wordpress的csv上传插件。我可以在mac上上传文件,但在windows pc上无法上传。csv文件使用utf-8编码在pc上创建 if (isset($_POST) && !empty($_POST)) { if (isset($_FILES) && $_FILES['csv_file']['size'] > 0 && $_FILES['csv_file']['type'] === 'text/csv') {

我有一个用于wordpress的csv上传插件。我可以在mac上上传文件,但在windows pc上无法上传。csv文件使用utf-8编码在pc上创建

if (isset($_POST) && !empty($_POST)) {

if (isset($_FILES) && $_FILES['csv_file']['size'] > 0 && $_FILES['csv_file']['type'] === 'text/csv') {

        global $wpdb;

    ini_set("auto_detect_line_endings", true);

    $start_row = (int) $_POST['start_row'];

    /*
     * Get CSV data and put it into an array
     */
    $fileData = file_get_contents($_FILES['csv_file']['tmp_name']);
    $lines = explode(PHP_EOL, $fileData);
    $csv = array();

    foreach ($lines as $line) {
            $csv[] = str_getcsv($line);
    }

    /*
     * Put each row into the database
     */
    $x = 1;
    $insert_count = 0;
    $insert_output = array();

    $wpdb->query('TRUNCATE TABLE table');

    foreach ($csv as $data) {

            if ($x >= $start_row) {

              $date = fix_date($data[0]);

              $sql = "
                INSERT INTO table ( date, column_1, column_2, column_3, column_4, column_5, column_6, column_7 ) 
                VALUES ( '" . $date . "', '" . addslashes( $data[1] ) . "', '" . utf8_encode( $data[2] ) . "', '" . addslashes( $data[3])  . "', '" . $data[4] . "', '" . addslashes( $data[5] ) . "', '" . $data[6] . "', '" . $data[7] . "' )
                ";

                $wpdb->query($sql)/* or die($sql)*/;
                $insert_output[] = $insert_count . '. Added: ' . $data[1] . ' - ' . $data[3] . '<br />';
                $insert_count++;

            }

            $x++;
        }

    echo '<div class="csv_success">Success. ' . number_format($insert_count) . ' rows uploaded.</div>';

} else {

    echo '<div class="csv_failure">Please make sure the file you uploaded is a CSV.</div>';

}

}
if(isset($\u POST)和&!empty($\u POST)){
如果(isset($\u文件)&&$\u文件['csv\u文件]['size']>0&&$\u文件['csv\u文件]['type']=='text/csv'){
全球$wpdb;
ini设置(“自动检测线结束”,真);
$start_row=(int)$_POST['start_row'];
/*
*获取CSV数据并将其放入数组中
*/
$fileData=file_get_contents($_FILES['csv_file']['tmp_name']);
$lines=explode(PHP\u EOL,$fileData);
$csv=array();
foreach($line作为$line){
$csv[]=str_getcsv($line);
}
/*
*将每一行放入数据库
*/
$x=1;
$insert_count=0;
$insert_output=array();
$wpdb->query('TRUNCATE TABLE');
foreach($csv作为$data){
如果($x>=$start\u行){
$date=固定日期($data[0]);
$sql=”
插入表格(日期、第1列、第2列、第3列、第4列、第5列、第6列、第7列)
值(“$date.”、“.addslashes($data[1])。”、“.utf8_encode($data[2])。”、“.addslashes($data[3])。”、“$data[4]。”、“.addslashes($data[5])。”、“$data[6]。”、“$data[7]。”)
";
$wpdb->query($sql)/*或die($sql)*/;
$insert_output[]=$insert_count.”。添加:'.$data[1].-'.$data[3].
; $insert_count++; } $x++; } 回显“成功”。.number_格式($insert_count)。“已上载行”; }否则{ echo“请确保您上传的文件是CSV文件。”; } }
有没有办法让它在windows和mac上运行

干杯



PHP\u EOL是您正在使用的操作系统的换行常量,但是,如果文件是在操作系统上创建的,而您正在另一个操作系统上上载,则可能无法工作。可能尝试分解(“\n”,$x)并将行修剪为\n应该在两者中。检查大小是否为非零不是验证上载的正确方法。失败的上载很容易具有非零大小。在对上载执行任何其他操作之前,您需要检查
是否($\u FILES['csv\u file']['error']==UPLOAD\u ERR\u OK)
。而
PHP\u EOL
是本地系统的EOL字符。它对于处理跨平台的东西是无用的,因为Mac eol不是PC eol只是出于好奇,你是否检查了
public\u html
中的
error\u log
文件[有时]?顺便说一句,这不是我的代码我正在调试以前的开发人员代码,看起来像$\u文件['csv\u file']['type']==='text/csv'是问题实际$\u文件['csv\u文件]['type']=='text/csv'在windows中的某些时候,csv的类型将是'application/octet stream',因此也请检查一下
<?php

ini_set('max_execution_time', 0);
$con = mysql_connect("localhost", "", "") or die("not connect");

mysql_select_db("demo") or die("select db");

 function readCSV($csvFile){
    $file_handle = fopen($csvFile, 'r');
    while (!feof($file_handle) ) {
        $line_of_text[] = fgetcsv($file_handle, 1024);
    }
    fclose($file_handle);
    return $line_of_text;
 }



  //Set path to CSV file
    $csvFile = 'page.csv';

 $csv = readCSV($csvFile);
 //echo count($csv);     
 for ($i=1; $i <count($csv) ; $i++) { 



    $sql="insert into demo1     (name,bdate,phonenumber ) values('".$csv[$i][0]."','".$csv[$i][1]."' ,'".$csv[$i][2]."')";
    mysql_query($sql);




 }
echo 'done';
?>