求一php文件上传代码,需要获取到文件的路径。

如图,一个表单,其中有一项是实现缩略图上传。点击上传后得到文件路径。表单提交到另一个php页面以后得到文件路径,和其他项的值。 难点在于上传怎么处理,外部已经有一个form了。
给出相关的一些代码如下,可以直接在上面改。
------------表单页面add.php---------------
<html>
<head></head>
<body>
<form action="roomaction.php?action=insertRoom" method="post" enctype="multipart/form-data">
<table align="center" width="600" cellpadding="0" border="1" cellspacing="0">
<tr height="35" >
<td align="right">房间类型:</td>
<td><input type="text" name="rType"></td>
</tr>
<tr height="35" >
<td align="right">房间价格:</td>
<td><input type="text" name="rPrice"></td>
</tr>
<tr height="35" >
<td align="right">缩略图:</td>
<td><input type="file" name="rPicurl" id="rPicurl" style="height:21px;"/><input type="button" value="上传">
</td>
</tr>
<tr height="35">
<td colspan="2" align="center"><input type="submit" value="添加类型"></td>
</tr>
</table>
</form>
</body>
<html>
------------表单接受页面action.php--------------------
$action = $_GET["action"];
if($action == "insertRoom"){
$rType = $_POST["rType"];
$rPrice = $_POST["rPrice"];
$rPicurl = $_POST["rPicurl"];
echo $rpicurl;
echo "<br>";
echo $rType;
}
---------------文件上传处理页面upload.php----------------
<?php
//---------多图片上传----------
function getExtName($file){ //获得文件括展名
$ext = pathinfo($file);
print_r($ext);
return $ext["extension"];
}
function getNewName(){
$newName = date("YmdHis").md5(mt_rand(10000,45333));
return $newName;
}
$pic = $_FILES["userupload"]; //接收文件上传
foreach($pic as $key=>$val){
echo "{$key}=>";
print_r($pic[$key]); //打印数组
echo "<br>";
}
echo "**********<br>";
foreach($pic["name"] as $key=>$val){
echo $key."<br>"; //如果库key==0,则$pic[""][$key] 都是指向第一图片的
if($pic["error"][$key]==0){ //此时指向第一个文件
$newName = "upload/".getNewName().".".getExtName($pic["name"][$key]);
move_uploaded_file($pic["tmp_name"][$key],$newName); //把上传来的图片从临时位置移动到指定位置。
}
}
-文件上传处理页面upload.php
$pic = $_FILES["userupload"]; //接收文件上传
这句要改为$pic = $_FILES["rPrice"];

第1个回答  2011-12-01
给你一个文件上传处理函数 很简单
//$name 文件名 $tmp_name文件临时名 $path文件存放路径 比如 $_FILES["rPrice"]['name'],$_FILES["rPrice"]['tmp_name'],"upload/" 函数返回的文件的路径
function upload($name,$tmp_name,$path,$allow='jpg,gif,png,bmp'){
//获取后缀名
$ext = explode('.',$name,2);
$exts = end($ext); //end()获得数组最后一个值
if(!stristr($allow,$exts)){
echo $allow,$exts;
echo '<h1>上传失败:你上传的文件类型暂不支持!</h1>';
exit;
}

//获取文件名,避免重名
$name = time().rand(1000,10000);

//深度分层,建立目录
$dir = date('Y/m/d');

$array = explode('/',$dir);

//一级级创建目录
foreach($array as $val){
$path = $path.$val.'/'; // 'attach/2010/11/15'
if(!is_dir($path)){ //is_dir()判断目录是否存在
mkdir($path); //mkdir()创建目录
}
}

move_uploaded_file($tmp_name,$path.$name.'.'.$exts);
return $dir.'/'.$name.'.'.$exts;
}
第2个回答  2011-12-01
好混乱
你就是想打开一个网页,然后可以浏览文件位置,然后上传,再返回来上传文件的路径吗?追问

恩 是的 浏览文件位置--上传---再在文本框得到该文件的路径(文件名是函数处理后的新名称)

追答

没明白,你把这个上传文件在服务器上的位置返回到你这个文本框里面嘛?

追问

对 当前页面实现上传 返回文件的路径到文本框 再把路径和其他文本框的内容传到表单提交后的页面。接收到值后,写入数据库 。
关键是如果上传按钮是 这样整个表单就提交了,而不是上传。

追答

其实你要达到这个效果,根本不用上传那个按钮,你浏览完文件之后,一起submit不就完事了?

第3个回答  2011-12-02
你不是都有代码了么?追问

是有了 但是还达不到所需的功能啊 。以上代码页面的第一个和第二个实现整个表单的接收。第二个和第三个实现文件的上传。但是三个页面不能连起来。先在第一个页面实现上传(要用到第三个页面,这里是关键),再post到第二个页面。

追答

第二个这样写
";
echo $rType;
$pic = $_FILES["rPicurl"]; //接收文件上传
foreach($pic as $key=>$val){
echo "{$key}=>";
print_r($pic[$key]); //打印数组
echo "";
}
echo "**********";
foreach($pic["name"] as $key=>$val){
echo $key.""; //如果库key==0,则$pic[""][$key] 都是指向第一图片的
if($pic["error"][$key]==0){ //此时指向第一个文件
$newName = "upload/".getNewName().".".getExtName($pic["name"][$key]);
move_uploaded_file($pic["tmp_name"][$key],$newName); //把上传来的图片从临时位置移动到指定位置。
}
function getExtName($file){ //获得文件括展名
$ext = pathinfo($file);
print_r($ext);
return $ext["extension"];
}
function getNewName(){
$newName = date("YmdHis").md5(mt_rand(10000,45333));
return $newName;
}
第三个不要了,合并了,可能变量名称会有错,自己调试下

本回答被提问者采纳
相似回答