PHP向MySQL数据库上传文件的问题

这是input.html文件:
<html>
<body>
<form name="msgform" method="post" action="reg.php" enctype='multipart/form-data'>
<input type="text" name="name"><br>
<input type="file" name="photo"><br>
<input tyep="submit" value="上传">
</form>
</body>
</html>
这是reg.php文件:
<?php
$conn=mysql_connect("localhost","user","password")
or die("不能连接数据库服务器:".mysql_error());
mysql_select_db("database",$conn) or die("不能选择数据库:".mysql_error());
$name=$_POST['name'];
$photo=$_POST['photo'];
if($photo != ""){
$fp=fopen($photo,"r");
$data=addslashes(fread($fp,filesize('$photo')));
$sql="insert into tablename (name,photo) values('$name','$photo');
mysql_query($sql,$conn) or die("插入数据失败:".mysql_error());
mysql_close($conn);
echo "你好";
}else{
echo "photo为空!";
}
?>
当我在input.html填写完提交之后就会显示“photo为空!”;很郁闷,$photo竟然没有接收到我所选的图片信息,请高手指点,谢了(很不好意思,我目前的财富值为1,没办法进行财富悬赏了),还请多多见谅

把reg.php中的第6行$photo=$_POST['photo'];改成$photo=$_FILES['photo']['tmp_name'];就好了!

当文件上传时,该文件将保存在Web服务器上的临时目录中,这是WEB服务器默认的临时目录。如果在脚本执行完成之前不移动、复制或更改文件名称,该文件将被删除。
在PHP脚本中,需要处理的数据保存在超级全局数组$_FILES中。
$_FILES['formname']['tmp_name']:文件在WEB服务器中临时存储的位置
$_FILES['formname']['name']:用户系统中的原文件名称
$_FILES['formname']['size']:文件的字节大小
$_FILES['formname']['type']:文件的MIME类型,例如:text/plain或image/gif
$_FILES['formname']['error']:任何与文件上传相关的错误代码
注:formname就是<input type="file" name="photo">的name值,在PHP脚本中你可以尝试用print_r($_FILES['formname']);显示相关数值!

你可以尝试用以下代码,完整的代码应该增加限制上传文件大小!!!
input.html文件:
<html>
<body>
<form name="msgform" method="post" action="reg.php" enctype='multipart/form-data'>
<input type="file" name="photo"><br>
<input type="submit" value="上传">
</form>
</body>
</html>

reg.php文件:
<?php
$conn=mysql_connect("localhost","user","password")
or die("不能连接数据库服务器:".mysql_error());
mysql_select_db("database",$conn) or die("不能选择数据库:".mysql_error());

//print_r($_FILES['photo']);//测试时使用

if($_FILES['photo']['error']>0){
$name=$_FILES['photo']['name'];//直接用原文件名称存入数据库比较方便使用
$photo=$_FILES['photo']['tmp_name'];
$fp=fopen($photo,"r");
$data=addslashes(fread($fp,filesize('$photo')));
$sql="insert into tablename (name,photo) values('$name','$photo');
mysql_query($sql,$conn) or die("插入数据失败:".mysql_error());
mysql_close($conn);
echo "上传成功";
}else{
echo "上传出错";
}//From J.L
?>
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-06-29

下面的代码分别用于创建mysql表和上传文件保存到mysql数据库

创建mysql表:

上传文件并保存到mysql中,通过insert语句插入

第2个回答  2010-11-30
$fp=fopen($photo,"r");这句不对,"r"只表示能读,没有就读不到,它不会自己去创建的,改成“r+”
第3个回答  2010-11-28
$_POST $_FILE

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网