我正在尝试创建一个脚本,用户可以将csv文件上传到表中。我从shotdev.com获得了教程,我收到了以下错误,我做错了什么?
* *不允许以下命令:复制
不允许使用以下命令:fopen **
page1.php中
<form action="page2.php" method="post" enctype="multipart/form-data" name="form1">
<input name="fileCSV" type="file" id="fileCSV">
<input name="btnSubmit" type="submit" id="btnSubmit" value="Submit">
</form>
使page2.php
<?
copy($_FILES["fileCSV"]["tmp_name"],"shotdev/".$_FILES["fileCSV"]["name"]); // Copy/Upload CSV
include 'datalogin.php';
$objCSV = fopen("shotdev/".$_FILES["fileCSV"]["name"], "r");
while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) {
$strSQL = "INSERT INTO customer ";
$strSQL .="(CustomerID,Name,Email,CountryCode,Budget,Used) ";
$strSQL .="VALUES ";
$strSQL .="('".$objArr[0]."','".$objArr[1]."','".$objArr[2]."' ";
$strSQL .=",'".$objArr[3]."','".$objArr[4]."','".$objArr[5]."') ";
$objQuery = mysql_query($strSQL);
}
fclose($objCSV);
echo "Import completed.";
?>
答案 0 :(得分:1)
看起来您正在以安全模式运行PHP或禁用某些功能。出于安全原因,Web主机通常会禁用文件命令。
您可以与网络主机讨论您的要求 - 如果您提出要求,有些人可以灵活地为您启用这些功能。
否则,您必须在不使用已禁用的文件命令的情况下实现它。一种方法是在HTML表单中创建textarea
,您可以在其中粘贴CSV。将它发送到您的PHP脚本,然后运行MySQL导入。
希望有所帮助
答案 1 :(得分:0)
这似乎是托管服务提供商施加的限制(他们似乎已将fopen()
和copy()
放在已禁用的功能列表中,这相当愚蠢),在这种情况下,您可能会除非要求提供者放宽限制,否则不要做任何事情。
但一般情况下,您并未使用move_uploaded_file()
正确处理上传的文件。使用它,如手册链接中的示例所示。