1

私の質問を説明してみましょう:

10,000 行以上の scv ファイルをアップロードしようとしています。とにかく、これらの行でいくつかのエラーが発生する可能性があります。

ファイルがまだデータベースにインポートされる処理中に発生するエラーごとに JSON を返すことさえ可能ですか?

//編集
OKここに私の読み取りコードがあります

 if (($handle = fopen('main_class/kur/'.$fileName, "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 30000, ";")) !== FALSE) {
        $row++;

        foreach ($data AS $columns=>$val){
            $data[$check->numberToColumnName($columns+1)]=$val;
            unset($data[$columns]);
        }

        $FormtedData = $check->FormatAllData($data);


        foreach ($FormtedData['vars'] AS $key=>$value){
            $column_type = $check->CheckType($value,$key);     

            switch ($column_type){
                case 'int' : $type=' int(11) unsigned NOT NULL ';
                    break;
                case 'float' : $type=' FLOAT NOT NULL ';
                    break;
                case 'TEXT' : $type=' TEXT NOT NULL ';
                    break;
                case 'varchar' : $type=' VARCHAR( 255 ) NOT NULL ';
                    break;

                default : ' int(11) unsigned NOT NULL ';
            }
            if ($row<3){
                $check->addColumnIfItDoesNotExist($key,$type); 
            }

            if ($column_type=='TEXT'){
                $PreviousType = $check->SingleColumnType($key);
                if ($PreviousType=='varchar(255)'){
                    $check->ChangeCoolumnType($key,$type);
                }    
            }                
        }

        $check->InsertValue($FormtedData['vars']);

        /*
        //$num = count($data);

        //echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;

        for ($c=0; $c < $num; $c++) {
        //echo $data[$c] . "<br />\n";
        }*/

        $column++;

        if ($check->numberToColumnName($num+1)==$column){
            $column='A';
        }

        //end of while for each row    
    }
    fclose($handle);
    //end of open
}

ここに私のアップローダーがあります:

function createUploader(){
    var uploader = new qq.FileUploader({
        element: document.getElementById('file-uploader-demo1'),
        action: '?func=FileUpload',
        debug: false,
        onProgress : function(a,b,c,d,e,f){
            // dunno what is this :D    
        },
        onComplete : function (a,b,json){
            $.each(eval(json), function(i, item) {
                console.log(i,'---',item,'<-');
            });
        },
    });
}
4

1 に答える 1

0

IE < 9 との互換性を気にしない場合は、JavaScript FileReader API を使用できます。

http://www.w3.org/TR/FileAPI/#FileReader-interface

http://www.html5rocks.com/en/tutorials/file/dndfiles/

選択したアップロード csv ファイルを JavaScript を使用して読み取り、Ajax リクエストごとに 1 行を PHP スクリプトに送信します。PHP は行を処理し、成功またはエラー メッセージを返します。

于 2012-10-15T13:22:05.250 に答える