PHP接受所有csv文件

时间:2015-09-14 08:48:58

标签: php csv

我是一名PHP初学者,正在编写一个程序,将.csv文件上传到网页。在测试我的程序时,我一直在使用名为Partitions.csv的文件。但是,现在我需要上传命名不同的文件,当我尝试这样做时,我的代码将不接受该文件。这是我上传文件的HTML代码。

<form action="uploader.v1.2.php" method="post" enctype="multipart/form-data">
        <input type="file" name="fileToUpload" id="fileToUpload" accept=".csv"/>
        <input type="submit" value="Upload File" name="submit" />
</form>

这是我接受该文件的PHP代码。

$sheetData = array();

        if (($handle = fopen($_FILES["fileToUpload"]["name"], "r")) !== FALSE) 
        {
            while (($dat = fgetcsv($handle, 1000, ",")) !== FALSE) 
            {
                $sheetData[] = $dat;
            }
            fclose($handle);
        }
        else
        {
            echo '<script language="javascript">';
            echo 'alert("Error Uploading File")';
            echo '</script>';

        }

有人能告诉我为什么我无法上传具有不同文件名的文件。任何帮助,将不胜感激。重申一下,我是一名PHP初学者

2 个答案:

答案 0 :(得分:0)

首先,属性accept必须包含MIME类型:

  

text /逗号分隔值,text / csv,text / anytext,application / csv,   application / excel,application / vnd.msexce,application / vnd.ms-excel

其次,CSV是文本格式,文件扩展名可能与.csv不同。 但是如果你想通过扩展来过滤,你可以使用FileAPI(https://w3c.github.io/FileAPI/)在clien端进行过滤。

答案 1 :(得分:0)

用以下内容替换上传处理程序行:

if(move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], YOUR_UPLOAD_DIRECTORY_PATH_AND_FINAL_FILENAME)):
if (($handle = fopen(YOUR_UPLOAD_DIRECTORY_PATH_AND_FINAL_FILENAME, "r")) !== FALSE) 
    {
        while (($dat = fgetcsv($handle, 1000, ",")) !== FALSE) 
        {
            $sheetData[] = $dat;
        }
        fclose($handle);
    }
    else
    {
        echo '<script language="javascript">';
        echo 'alert("Error Uploading File")';
        echo '</script>';

    }
endif;

其中“YOUR_UPLOAD_DIRECTORY_PATH_AND_FINAL_FILENAME”表示服务器上的目录路径和文件名:例如:“/ wamp / www / uploads / test.csv”。