Php 如何上载图像并将其存储在数据库中?
我正试图上传一个图像并将其存储在数据库中。我提到了代码,但它对我不起作用。我找不到窃听器。请看看是否有人能找到这个bug。 代码是:Php 如何上载图像并将其存储在数据库中?,php,file-upload,Php,File Upload,我正试图上传一个图像并将其存储在数据库中。我提到了代码,但它对我不起作用。我找不到窃听器。请看看是否有人能找到这个bug。 代码是: <?php $name=$_REQUEST['name']; $email=$_REQUEST['email']; if($_REQUEST['submit']) { if(($_FILES['file']['type']=="image/jpeg" or $_FILES['file']['type']=="image/pjpeg" or $_F
<?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>
以上所有字段均为空。嗯。。。。
试着改变这一行
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))
如果($\u文件['file']['type']==“image/jpeg”或$\u文件['file']['type']==“image/pjpeg”或$\u文件['file']['type']==“image/gif”)和($\u文件['file']['size']试试这个
<?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>
如果$\u POST和$\u文件均为空,则您已超过最大POST大小ini('POST\u max\u size'))
php.ini中有几个设置,包括单个文件的最大值(“upload_max_filesize”)和所有上载的最大值(“post_max_size”)。请确保这些ini设置正确
如果您编辑了语法,请注意语法。处理M、K或G(不是KB、MB或GB)时,语法很挑剔,并且不要超过服务器的位大小,即在32位服务器上不要超过40亿字节
$\u文件为空,但不是$\u POST的其他原因。您没有足够的可用空间上载文件,或者您没有写入临时目录的权限。请检查/tmp是否有足够的空间,并且您可以作为apache/php用户写入它。我不知道这是如何工作的,但它没有工作。我想问题出在我的中的某个地方e> HTML
code,因为$\u文件
值为无/空。它不是从表单标签中检索值。请检查我的答案是否不正确,以解决问题,或者更正如何解决科学或计算机中的其他主题中的这一难题,并且它的表单已出错或成功。当我移动我的code在一个独立的.php文件上。当我需要上传时,我给了那个页面的链接,其中写了独立上传代码。我不知道这背后的原因,但我就是这样解决的。文件是否少于300K?我还建议您打印($文件)最好将图像路径存储在数据库中,图像存储在另一个文件夹或位置是的,文件小于300K@Robbie…..我甚至没有将图像存储在文件夹中(文件夹名称:upload,如代码中所述)…如果我将图像存储在文件夹中,那么我可以按照您的建议@vikrantxprint\r($\u文件)
在您的情况下它会产生什么结果?文件夹上传
是否设置了必要的权限?我按照您的建议进行了尝试…但没有成功。我想问题出在我的html代码中的某个地方,因为$\u文件的值是空的…它没有从表单标记中检索值…请检查是否发现错误。。。“弃用”意味着PHP5.3.0不再支持该函数因为不再存在。$\u POST不是空的…这里可能不会出现权限或缺少可用空间的情况,因为当我在一个单独的php文件中上载图像时,我已经编写了类似的上载代码,但没有上面代码中提到的其他更新,我的图像将与该单独的文件一起上载。但不会与上面的代码一起上载代码似乎没有问题(我可以看到)您还说其他示例可以工作-所以服务器很好。那么,这就是您的全部代码,而不是编辑的吗?现在最可能的问题是您已经从真实源代码编辑到上面的工作版本。检查原始源代码中是否存在enctype,检查您是否只有一个开始元素和一个“name=”文件“输入等等。这就是我所能想到的。如果公开提供(html部分,而不是php),你能发布一个链接吗?上面的代码正是我在服务器上运行的代码…html部分在我发布的上面的代码中…绝对难懂。那么,我唯一的‘最后喘息’是建议在“操作”中添加一个URL,但看不出这会有什么帮助。所以我称之为“回到第一原则”-在服务器上的其他地方使用一些代码,在这里检查是否有效,然后一次编辑一行,直到获得所需的代码。然后比较差异。抱歉-您的代码很好(除非我们都缺少它)所以真的没有其他建议。当我把我的代码移动到一个独立的.php
文件上时,它起作用了。当我需要上传时,我给了那个页面的链接,独立上传代码就是在其中编写的。我不知道这背后的原因,但我就是这样解决的。我不明白你想说什么。我请求无论谁对这个答案投了赞成票,请试着向我解释一下。
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)
<?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>