PHP向MySQL数据库上传文件的问题
这是input.html文件:<html><body><formname="msgform"method="post"action="reg.php"enctype='m...
这是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,没办法进行财富悬赏了),还请多多见谅 展开
<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,没办法进行财富悬赏了),还请多多见谅 展开
4个回答
2010-11-29
展开全部
把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
?>
当文件上传时,该文件将保存在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
?>
推荐于2016-06-29 · 知道合伙人金融证券行家
关注
展开全部
$fp=fopen($photo,"r");这句不对,"r"只表示能读,没有就读不到,它不会自己去创建的,改成“r+”
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
$_POST $_FILE
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询