我正在尝试上传图片并将其存储在数据库中。我已经提到了代码,但它对我不起作用。我无法找到这个bug。请查看是否有人可以找到该错误。 代码是:
<?php
$name=$_REQUEST['name'];
$email=$_REQUEST['email'];
if($_REQUEST['submit'])
{
if(($_FILES['file']['type']=="image/jpeg" or $_FILES['file']['type']=="image/pjpeg" or $_FILES['file']['type']=="image/gif") and ($_FILES['file']['size']<300000))
{
if($_FILES['file']['error']>0)
{
$err=" ERROR :: ".$_FILES['file']['error'];
}
else
{
echo "Upload :".$_FILES['file']['name']."<br/>";
echo "Type: ".$_FILES['file']['type']."<br/>";
echo "Size: ".($_FILES['file']['size']/1024)."Kb<br/>";
echo "Stored in: ".$_FILES['file']['tmp_name']."<br/>";
move_uploaded_file($_FILES['file']['tmp_name'],"upload/".$_FILES['file']['name']);
echo $_FILES['file']['name'];
echo $_FILES['file']['tmp_name']."qwerty";
$n=3000;
$fo=fopen("upload/".$_FILES['file']['name'],"r");
$fr=fread($fo,$n);
mysql_query("update user set pic='$fr' where id='$id'");
}
}
else
{
$err=" ERROR :: Invalid Image";
}
mysql_query("update user set name='$name' where id='$id'");
mysql_query("update user set email='$email' where id='$id'");
}
$sql="select * from user where id='$id'";
$con=mysql_query($sql);
list($idR,$nameR,$emailR,$pwdR,$dateR,$picR)=mysql_fetch_array($con);
?>
<body>
<form action="" method="post" enctype="multipart/form-data">
<table>
<tr>
<td colspan="2"><?php echo $err; ?></td>
</tr>
<tr>
<td>Name:</td>
<td><input type="text" name="name" value="<?php echo $nameR ?>" /></td>
</tr>
<tr>
<td>Email:</td>
<td><input type="text" name="email" value="<?php echo $emailR ?>" /></td>
</tr>
<tr>
<td><label for="file">Upload or Change Pic:</label></td>
<td><input type="file" name="file" id="file" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="submit" value="Save"/></td>
</tr>
</table>
</form>
</body>
我的代码甚至无法上传文件。当我尝试echo
以下时,我发现它们是空的:
echo "Name:".$_FILES['file']['name']."<br/>";
echo "Type: ".$_FILES['file']['type']."<br/>";
echo "Size: ".($_FILES['file']['size']/1024)."Kb<br/>";
echo "Stored in: ".$_FILES['file']['tmp_name'];
以上所有字段均为空。
答案 0 :(得分:1)
我不知道这项工作如何,但它没有奏效。我想这个问题出现在我的HTML
代码中,因为$_FILES
值为none / empty。它不是从表单标签中检索值,请检查我的答案是否不正确以解决问题,或者纠正如何从计算机中的科学或其他主题解决这个难题,并将其形成错误或成功。
答案 1 :(得分:0)
试试这个!
<?php
if(isset($_POST['submit']) && $_FILES['file']['size'] > 0)
{
// Data
$file_name = $_FILES['file']['name'];
$tmp_name = $_FILES['file']['tmp_name'];
$file_size = $_FILES['file']['size'];
$file_type = $_FILES['file']['type'];
// Check
$type = array(
'image/jpeg',
'image/gif',
'image/png',
);
$size = 300000;
if(in_array($file_type, $type) AND $file_size > $size)
{
echo 'Ooops! File type must be JPG, GIF or PNG. Or file size too big';
exit();
}
// Is error?
if ($_FILES["file"]["error"] > 0)
{
echo 'Upload Error';
exit();
}
else
{
echo 'File Name : '.$file_name.'<br />';
echo 'File Size : '.($file_size / 1024).' Kb<br />';
echo 'File Type : '.$file_type;
}
}
?>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="file" />
<input type="submit" name="submit" value="Save"/>
</form>
答案 2 :(得分:0)
如果$ _POST和$ _FILES都为空,那么您已经超过了最大帖子大小ini(&#39; post_max_size&#39;)
php.ini中有几个设置,包括单个文件的最大值(&#39; upload_max_filesize&#39;),以及所有上传的最大值(&#39; post_max_size&#39;)。确保正确设置了这些ini设置
如果您编辑了它,请注意语法,处理M,K或G(不是KB,MB或GB)时挑剔,并且不要超过服务器的位大小,即在32位服务器上不要超过40亿字节。
$ _FILES为空的其他原因,但不是$ _POST。您没有足够的可用空间来上传文件,或者您没有权限写入临时目录。检查/ tmp有足够的空间,你可以用apache / php用户写入它。
答案 3 :(得分:-1)
当我在独立的.php文件上移动代码时,它工作正常。当我需要上传时,我给了该页面的链接,其中编写了独立的上传代码。我不知道背后的原因,但这就是我解决它的原因。
答案 4 :(得分:-2)
嗯.... 尝试更改此行
if($_REQUEST['submit'])
是
if(isset($_REQUEST['submit']))
我想,这段代码
if(($_FILES['file']['type']=="image/jpeg" or $_FILES['file']['type']=="image/pjpeg" or $_FILES['file']['type']=="image/gif") and ($_FILES['file']['size']<300000))
可以简化为
if(ereg("jpeg|pjpeg|jpg|gif|png", $_FILES['file']['type']) AND $_FILES['file']['size']<300000)
祝你好运......