我只是想上传一个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>';
}
答案 0 :(得分:1)
您应该使用$_FILES
数组来检查文件上传
使用此代码:
if(isset($_FILES["csvfile"])) {
$csv=str_getcsv(file_get_contents($_FILES["csvfile"]["tmp_name"]));
echo '<pre>';
print_r($csv);
echo '</pre>';
}
答案 1 :(得分:0)
默认情况下,文件存储在临时目录中,可由$_FILES['file_name']['tmp_name']
访问:
如您所见,str_getcsv方法的第一个参数必须是字符串,为此您可以使用file_get_contents
$csv = str_getcsv(file_get_contents($_FILES['csvfile']['tmp_name']));
答案 2 :(得分:0)
如果您要提交文件(使用<input type="file">
),则需要使用move_uploaded_file()
。该文件已经在磁盘上(如果表单提交成功),您只需要移动它。在这种情况下,最方便的是使用fgetcsv()
打开文件并将其解析为数组(参见该函数文档中的示例)。
如果您没有使用例如<textarea></textarea>
提交文件而是提交文本,那么您不必将$_POST
变量中的字符串写入磁盘,但可以使用{{3}将字符串解析成数组。