这可能是非常直接的,让我发疯了!
我正在尝试使用PHP上传文件并将文件作为blob写入MySQL。
问题是当我尝试使用
时,网站会一直抛出“未定义的索引”$ _ FILES ['file'] ['tmp_name'] property。
这是我的代码:
<head>
<title>Upload Worksheet</title>
</head>
<body>
<form action="index.php" method="POST" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="2000" />
File :
<input type="file" name"file" id="file"><input type="submit" value="Upload">
</form>
<?php
//connect to db
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("autoedi") or die(mysql_error());
//file properties
$file = $_FILES['file']['tmp_name'];
if(!isset($file))
echo "Please choose a file.";
else {
$uploadfile = addslashes(file_get_contents( $_FILES['file']['name']));
$uploadfilename = addslashes($_FILES['file']['tmp_name']);
}
?>
</body>
这是错误消息的样子:
我甚至没有进入数据库方面,因为我无法超越这个阶段。
我是一个PHP菜鸟,所以任何帮助都将非常感谢!
答案 0 :(得分:3)
您收到该错误消息,因为尚未发送表单。当您点击上传按钮时,表单将发送到您的服务器,PHP将使用数据填充$ _POST和$ _FILES数组。但是,在此之前,数组是空的。因此,最好检查您的数据是否已设置,如下所示:
if (isset ($_POST['upload']))
{
// upload logic here
if(!isset($_FILES['file']) || ($_FILES['file']['tmp_name'] == ''))
echo "Please choose a file.";
else {
$uploadfile = addslashes(file_get_contents( $_FILES['file']['name']));
$uploadfilename = addslashes($_FILES['file']['tmp_name']);
}
}
这假设您有一个名为“upload
”的提交按钮。
答案 1 :(得分:0)
以上答案是完美的,因为您应该检查for post值以便在这些值上运行任何代码,但您也可以尝试以下
<?php
//connect to db
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("autoedi") or die(mysql_error());
//file properties
if(isset($_POST))
{
if(array_key_exists('file',$_FILES))
{
$file = $_FILES['file']['tmp_name'];
if(!isset($file))
echo "Please choose a file.";
else {
$uploadfile = addslashes(file_get_contents( $_FILES['file']['name']));
$uploadfilename = addslashes($_FILES['file']['tmp_name']);
}
}
?>