大CSV上传 - 文件名不能为空

时间:2014-11-24 12:29:22

标签: php file csv laravel

使用php 5.4.34和Laravel 4与apache 2.2.22和Ubuntu。

使用库https://github.com/goodby/csv解析上传的csv。

这是我的代码:

 $file = Input::file('file');
            //echo $file->getClientOriginalName();
$config = new LexerConfig();
$config
                ->setDelimiter(";")
                ->setToCharset('UTF-8')
;
$lexer = new Lexer($config);
$interpreter = new Interpreter();

$salarie_csv = [];
$errors = [];
$lineNb = 0;
$interpreter->addObserver(function (array $rows) use (&$salarie_csv, &$lineNb, &$errors) {
    //some code
});
$lexer->parse($file, $interpreter);

return Response::json($errors, 200);

当我上传一个1.5Mb大小的csv,其中有20.000行时,它可以工作。

当我上传一个包含38.500行的2.5Mb大小的csv时,它会给我一个错误:

 SplFileObject::__construct():Filename cannot be empty in Lexer.php line 50.

我尝试使用相同的文件(刚删除或添加一些行进行测试)

有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:4)

检查php.ini配置文件中的post_max_sizeupload_max_filesize。 PHP可能不允许上传太大的文件,所以它会从帖子中删除它。

var_dump( ini_get('post_max_size') );

请注意,post_max_size会覆盖upload_max_filesize(如回答here中所述),您应该确保这两个设置都允许您上传的尺寸。< / p>

答案 1 :(得分:0)

Try This..........



$type=$_FILES['file']['type'];
    $filename=$_FILES["file"]["tmp_name"];
     $filename_csv = explode(".", $_FILES["file"]["name"]);
    $extension = end($filename_csv);
    if($extension=="csv")
    {
        if($_FILES["file"]["size"] > 0)
    {
        $file = fopen($filename, "r");

        while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE)
        {

        $sql = mysql_query("insert into upload_data(spent,click,filename,date) values('$emapData[0]','$emapData[1]','$emapData[2]','$emapData[3]')") or die (mysql_error());
        mysql_query($sql);
        }
        fclose($file);
        echo $error1=ucwords('<div style="margin-left:60px;position: absolute;width: 400px; color: #006400;">CSV File has been successfully Imported</div>');

        }
        }
        else
        {
        echo $error1=ucwords('<div style="margin-left:60px;position: absolute;width: 400px; color: #CC0000;">Invalid File:Please Upload CSV File</div>');
       // echo 'Invalid File:Please Upload CSV File';
        }