我是一名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初学者
答案 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”。