1

我只是想上传一个 csv 文件并将其转换为数组。

我在这里阅读了之前的一篇文章,您可以使用 str_getcsv() 而无需将 csv 文件物理上传到服务器。

这是正确的还是我必须先将文件存储在某个地方才能运行 str_getcsv() 然后再删除它?

这是我目前的简单代码(我使用的是 php 5.3):

if (isset($_POST['file_upload'])){
    $csv = str_getcsv($_POST['csvfile']);

echo '<pre>';
print_r($csv);
echo '</pre>';
}
4

3 回答 3

2

您应该使用$_FILES数组来检查文件上传。
使用此代码:

if(isset($_FILES["csvfile"])) {
    $csv=str_getcsv(file_get_contents($_FILES["csvfile"]["tmp_name"]));

    echo '<pre>';
    print_r($csv);
    echo '</pre>';
}
于 2013-08-08T11:43:10.093 回答
0

默认情况下,文件存储在临时目录中,可以通过以下方式访问$_FILES['file_name']['tmp_name']

如您所见,str_getcsv方法的第一个参数必须是字符串,为此您可以使用file_get_contents

$csv = str_getcsv(file_get_contents($_FILES['csvfile']['tmp_name']));
于 2013-08-08T11:41:10.390 回答
0

如果您要提交文件(使用<input type="file">),则需要使用move_uploaded_file(). 该文件已经在磁盘上(如果表单提交成功),您只需移动它。在这种情况下,使用打开文件并将其解析为数组是最方便fgetcsv()的(请参阅该函数的文档中的示例)。

如果您使用的不是文件而是文本<textarea></textarea>,那么您不必将$_POST变量中的字符串写入磁盘,但可以使用str_getcsv将字符串解析为数组。

于 2013-08-08T11:44:20.243 回答