PHP图片上传 我要做一个图片显示,首先用后台管理程序上传图片,把图片放在根目录下的img目录下,然后把路径放到数据库,然后前台页面显示从数据库里拿路径,显示图片,我现在,不知道要怎样弄才能实现上述功能,希望各位大侠给我建议,当然有代码,更好,我是第一次做PHP网站,很多地方都不懂,希望各位大侠帮帮忙!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 PHP文件上传:http://www.w3school.com.cn/php/php_file_upload.asp至于显示。连接数据库。查询出来显示就行了。 请问上面的帅哥,$_FILES["file"]["tmp_name"]这个是不是就是要存到数据库里面的图片路径? $_FILES["file"]["tmp_name"]指的是你上传的图片文件的临时文件 那个是临时文件名。你要存最终保存在服务器中的文件名。即:move_uploaded_file(file,newloc) 函数的newloc名字。 这个是已经上传到服务器的临时文件名,你还要把它移动到你想要的目录下面使用move_uploaded_file函数移动 可以帮忙解释下吗,就是newloc是什么? 有谁可以给个小例子吗?邮箱是:[email protected] [email protected],不知道那些函数时干嘛用的,是哪里来的 你是指从哪取? mysql中取出地址。输出图片就是了。 move_uploaded_file(file,newloc),括号里面的东西,真不找到放什么,反正就是不移动到那个地方去 仅供参考:public function upLoadFile(){ $userFile = $_FILES['userfile']; $file_tmp = $userFile['tmp_name']; $file_name = $userFile['name']; $file_dir = "../../upLoadFile/"; //自定义存放路径 $file_type = $userFile['type']; $file_error = $userFile['error']; $arr = explode(".",$file_name); $file_suffix = $arr[1]; //文件后缀 $file_save = time(); //以文件的修改时间作为上传文件的保存名称 if (is_uploaded_file($file_tmp)) { if ($file_error == 0) { if ( $file_type != "image/pjpeg"){ echo "上传的文件类型出错<br/>"; exit; } //将接收到的文件转移到指定目录的文件夹下 move_uploaded_file($file_tmp, $file_dir.$file_save.".".$file_suffix); //将数据保存到数据库 $this->insertInfor($file_name,$file_dir,$file_save,$file_suffix); }else{ echo "上传失败<br/>"; } }else { exit; }//录入数据 function insertInfor($fileName,$fileDir,$saveName,$fileSuff){ $str = "INSERT INTO mov_load(fileName,fileDir,saveName,fileSuff) VALUE(?,?,?,?);"; $stmt = $this->mysqli->prepare($str); $stmt->bind_param('ssss',$fileName,$fileDir,$saveName,$fileSuff); $stmt->execute(); $rows = $stmt->affected_rows; if ($rows > 0){ //echo "数据已录入库中<br/>"; //上传成功后调至已传页面 header("location:movieAction.class.php?showLoad=1"); }else{ echo "数据传输失败<br/>"; } } //显示数据 function showInfor(){ $sql = "SELECT lid,fileName,fileDir,saveName,fileSuff FROM mov_load;"; $stmt = $this->mysqli->prepare($sql); $stmt->execute(); $stmt->store_result(); $stmt->bind_result($lid,$fileName,$fileDir,$saveName,$fileSuff); $rows = $stmt->affected_rows; if($rows > 0){ $arrFile = array(); while($stmt->fetch()){ $arr = array( "lid" => $lid, "fileName" => $fileName, "fileDir" => $fileDir, "saveName" => $saveName, "fileSuff" => $fileSuff ); array_push($arrFile,$arr); } return $arrFile; }else{ echo "文件信息查询失败!<br/>"; } $stmt->close(); $this->mysqli->close(); return $lid; } public function upLoadFile(){ $userFile = $_FILES['userfile']; $file_tmp = $userFile['tmp_name']; $file_name = $userFile['name']; $file_dir = "../../upLoadFile/"; //自定义存放路径 $file_type = $userFile['type']; $file_error = $userFile['error']; $arr = explode(".",$file_name); $file_suffix = $arr[1]; //文件后缀 $file_save = time(); //以文件的修改时间作为上传文件的保存名称 if (is_uploaded_file($file_tmp)) { if ($file_error == 0) { if ( $file_type != "image/pjpeg"){ echo "上传的文件类型出错<br/>"; exit; } //将接收到的文件转移到指定目录的文件夹下 move_uploaded_file($file_tmp, $file_dir.$file_save.".".$file_suffix); //将数据保存到数据库 $this->insertInfor($file_name,$file_dir,$file_save,$file_suffix); }else{ echo "上传失败<br/>"; } }else { exit; }//录入数据 function insertInfor($fileName,$fileDir,$saveName,$fileSuff){ $str = "INSERT INTO mov_load(fileName,fileDir,saveName,fileSuff) VALUE(?,?,?,?);"; $stmt = $this->mysqli->prepare($str); $stmt->bind_param('ssss',$fileName,$fileDir,$saveName,$fileSuff); $stmt->execute(); $rows = $stmt->affected_rows; if ($rows > 0){ //echo "数据已录入库中<br/>"; //上传成功后调至已传页面 header("location:movieAction.class.php?showLoad=1"); }else{ echo "数据传输失败<br/>"; } } //显示数据 function showInfor(){ $sql = "SELECT lid,fileName,fileDir,saveName,fileSuff FROM mov_load;"; $stmt = $this->mysqli->prepare($sql); $stmt->execute(); $stmt->store_result(); $stmt->bind_result($lid,$fileName,$fileDir,$saveName,$fileSuff); $rows = $stmt->affected_rows; if($rows > 0){ $arrFile = array(); while($stmt->fetch()){ $arr = array( "lid" => $lid, "fileName" => $fileName, "fileDir" => $fileDir, "saveName" => $saveName, "fileSuff" => $fileSuff ); array_push($arrFile,$arr); } return $arrFile; }else{ echo "文件信息查询失败!<br/>"; } $stmt->close(); $this->mysqli->close(); return $lid; } 纠结,我把里面的函数打印出来,发现 $userFile['tmp_name']取不到值,这也是 不能移动图片的原因。 把你的错误显示功能打开。php.ini中令 display_errors=On 然后把错误信息贴出来以供分析。 我找到原因了,其实我一开始就做好了,只是IE和火狐不兼容,所以$_FILES['userfile']['error']的值一直是2所以取不到 缓存名称,也就无法移动文件了,谢谢各位,我马上给分,尤其是谢谢jordan102,因为我每个不知道的问题,你都帮助过我! 你可以打印机file数组看看,还有其他的很多东西。 取不到值,看下表单类型设置得对不对?应该设置成mulitphy-data啥的,同时method设置成POST. php生成excel中能否带上vba? 求解MYSQL乱码问题 分页时遇到的问题 @@@@ 请问PHP如何页面截屏???? @@@@ 求php操作access数据库 htmlspecialchars("\\1") 这句失效了。。 跪求: 关闭IE时,如何调用一段PHP程序 ? 在线等! 请六道之纹 心存善念进!在线给分 关于frame的问题 一个网上报名系统 请教一个字符串截取的问题 如何处理字节流?急!!!
move_uploaded_file(file,newloc) 函数的newloc名字。
使用move_uploaded_file函数移动
$file_tmp = $userFile['tmp_name'];
$file_name = $userFile['name'];
$file_dir = "../../upLoadFile/"; //自定义存放路径
$file_type = $userFile['type'];
$file_error = $userFile['error'];
$arr = explode(".",$file_name);
$file_suffix = $arr[1]; //文件后缀
$file_save = time(); //以文件的修改时间作为上传文件的保存名称 if (is_uploaded_file($file_tmp)) {
if ($file_error == 0) { if ( $file_type != "image/pjpeg"){
echo "上传的文件类型出错<br/>";
exit;
}
//将接收到的文件转移到指定目录的文件夹下
move_uploaded_file($file_tmp, $file_dir.$file_save.".".$file_suffix);
//将数据保存到数据库
$this->insertInfor($file_name,$file_dir,$file_save,$file_suffix); }else{
echo "上传失败<br/>";
} }else {
exit;
}//录入数据
function insertInfor($fileName,$fileDir,$saveName,$fileSuff){
$str = "INSERT INTO mov_load(fileName,fileDir,saveName,fileSuff) VALUE(?,?,?,?);";
$stmt = $this->mysqli->prepare($str);
$stmt->bind_param('ssss',$fileName,$fileDir,$saveName,$fileSuff);
$stmt->execute();
$rows = $stmt->affected_rows;
if ($rows > 0){
//echo "数据已录入库中<br/>";
//上传成功后调至已传页面
header("location:movieAction.class.php?showLoad=1");
}else{
echo "数据传输失败<br/>";
} } //显示数据
function showInfor(){
$sql = "SELECT lid,fileName,fileDir,saveName,fileSuff FROM mov_load;";
$stmt = $this->mysqli->prepare($sql);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($lid,$fileName,$fileDir,$saveName,$fileSuff);
$rows = $stmt->affected_rows;
if($rows > 0){
$arrFile = array();
while($stmt->fetch()){
$arr = array(
"lid" => $lid,
"fileName" => $fileName,
"fileDir" => $fileDir,
"saveName" => $saveName,
"fileSuff" => $fileSuff
);
array_push($arrFile,$arr);
}
return $arrFile;
}else{
echo "文件信息查询失败!<br/>";
}
$stmt->close();
$this->mysqli->close(); return $lid;
}
$file_tmp = $userFile['tmp_name'];
$file_name = $userFile['name'];
$file_dir = "../../upLoadFile/"; //自定义存放路径
$file_type = $userFile['type'];
$file_error = $userFile['error'];
$arr = explode(".",$file_name);
$file_suffix = $arr[1]; //文件后缀
$file_save = time(); //以文件的修改时间作为上传文件的保存名称 if (is_uploaded_file($file_tmp)) {
if ($file_error == 0) { if ( $file_type != "image/pjpeg"){
echo "上传的文件类型出错<br/>";
exit;
}
//将接收到的文件转移到指定目录的文件夹下
move_uploaded_file($file_tmp, $file_dir.$file_save.".".$file_suffix);
//将数据保存到数据库
$this->insertInfor($file_name,$file_dir,$file_save,$file_suffix); }else{
echo "上传失败<br/>";
} }else {
exit;
}//录入数据
function insertInfor($fileName,$fileDir,$saveName,$fileSuff){
$str = "INSERT INTO mov_load(fileName,fileDir,saveName,fileSuff) VALUE(?,?,?,?);";
$stmt = $this->mysqli->prepare($str);
$stmt->bind_param('ssss',$fileName,$fileDir,$saveName,$fileSuff);
$stmt->execute();
$rows = $stmt->affected_rows;
if ($rows > 0){
//echo "数据已录入库中<br/>";
//上传成功后调至已传页面
header("location:movieAction.class.php?showLoad=1");
}else{
echo "数据传输失败<br/>";
} } //显示数据
function showInfor(){
$sql = "SELECT lid,fileName,fileDir,saveName,fileSuff FROM mov_load;";
$stmt = $this->mysqli->prepare($sql);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($lid,$fileName,$fileDir,$saveName,$fileSuff);
$rows = $stmt->affected_rows;
if($rows > 0){
$arrFile = array();
while($stmt->fetch()){
$arr = array(
"lid" => $lid,
"fileName" => $fileName,
"fileDir" => $fileDir,
"saveName" => $saveName,
"fileSuff" => $fileSuff
);
array_push($arrFile,$arr);
}
return $arrFile;
}else{
echo "文件信息查询失败!<br/>";
}
$stmt->close();
$this->mysqli->close(); return $lid;
}
然后把错误信息贴出来以供分析。
所以取不到 缓存名称,也就无法移动文件了,谢谢各位,我马上给分,尤其是谢谢jordan102,因为我每个不知道的问题,你都帮助过我!
取不到值,看下表单类型设置得对不对?应该设置成mulitphy-data啥的,同时method设置成POST.