php 文件上传
文件上传表单<html><body><formmethod="post"action="two.php"enctype="multipart/form-data"><ta...
文件上传表单
<html>
<body>
<form method="post" action="two.php" enctype="multipart/form-data">
<table border=1>
<tr>
<td>
<input type="hidden" name="MAX_FILE_SIZE" value="200000">文件:</td>
<td>
<input name="file" type="file" value="浏览" > </td>
<td>
<input type="submit" value="上传" name="B1"> </td>
</tr>
</table>
</form>
</body>
</html>
two.php页面代码
<?php
$uploaddir = "D:My Documents/phpnow/htdocs/mysite/_notes/upload/";//设置文件保存目录 注意包含/
$type=array("jpg","gif","bmp","jpeg","png");//设置允许上传文件的类型
$patch="http://127.0.0.1/mysite/untitled.php/";//程序所在路径
function fileext($filename)
{
return substr(strrchr($filename, '.'), 1);
}//获取文件后缀名函数
function random($length)
{
$hash = 'CR-';
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
$max = strlen($chars) - 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i < $length; $i++)
{
$hash .= $chars[mt_rand(0, $max)];
}
return $hash;
}
$a=strtolower(fileext(@$_FILES['file']['name']));//生成随机文件名函数
if(!in_array(strtolower(fileext(@$_FILES['file']['name'])),$type))
{
$text=implode(",",$type);
echo "您只能上传以下类型文件: ",$text,"<br>";
}//判断文件类型
else
{
$filename=explode(".",$_FILES['file']['name']);
do
{
$filename[0]=random(6); //设置随机数长度
$name=implode(".",$filename); //$name1=$name.".Mcncc";
$uploadfile=$uploaddir.$name;
}
while(file_exists($uploadfile));
if (move_uploaded_file(@$_FILES['file']['tmp_name'],$uploadfile)){
if(is_uploaded_file(@$_FILES['file']['tmp_name'])){
//输出图片预览
echo "<center>您的文件已经上传完毕 上传图片预览: </center><br><center><img src='$uploadfile'></center>";
echo"<br><center><a href='javascript:history.go(-1)'>继续上传</a></center>";
}//生成目标文件的文件名
else{
echo "上传失败!";
}
}
}
?>
问:文件上传失败,为什么它(文件)还能保存到我所指定的文件夹里?
问:为什么文件上传会失败?看一看代码有什么问题,还是我的路径写的有问题
$patch="http://127.0.0.1/mysite/untitled.php/";//程序所在路径 这一句代码不是很了解 解释一下吧
问:改成$uploaddir = "./upload/";上传的时候,页面会显示以下的内容:
Warning: move_uploaded_file(./upload/CR-fxIgzY.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in D:\My Documents\phpnow\htdocs\mysite\two.php on line 44 但文件不能保存了
烦人啊 展开
<html>
<body>
<form method="post" action="two.php" enctype="multipart/form-data">
<table border=1>
<tr>
<td>
<input type="hidden" name="MAX_FILE_SIZE" value="200000">文件:</td>
<td>
<input name="file" type="file" value="浏览" > </td>
<td>
<input type="submit" value="上传" name="B1"> </td>
</tr>
</table>
</form>
</body>
</html>
two.php页面代码
<?php
$uploaddir = "D:My Documents/phpnow/htdocs/mysite/_notes/upload/";//设置文件保存目录 注意包含/
$type=array("jpg","gif","bmp","jpeg","png");//设置允许上传文件的类型
$patch="http://127.0.0.1/mysite/untitled.php/";//程序所在路径
function fileext($filename)
{
return substr(strrchr($filename, '.'), 1);
}//获取文件后缀名函数
function random($length)
{
$hash = 'CR-';
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
$max = strlen($chars) - 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i < $length; $i++)
{
$hash .= $chars[mt_rand(0, $max)];
}
return $hash;
}
$a=strtolower(fileext(@$_FILES['file']['name']));//生成随机文件名函数
if(!in_array(strtolower(fileext(@$_FILES['file']['name'])),$type))
{
$text=implode(",",$type);
echo "您只能上传以下类型文件: ",$text,"<br>";
}//判断文件类型
else
{
$filename=explode(".",$_FILES['file']['name']);
do
{
$filename[0]=random(6); //设置随机数长度
$name=implode(".",$filename); //$name1=$name.".Mcncc";
$uploadfile=$uploaddir.$name;
}
while(file_exists($uploadfile));
if (move_uploaded_file(@$_FILES['file']['tmp_name'],$uploadfile)){
if(is_uploaded_file(@$_FILES['file']['tmp_name'])){
//输出图片预览
echo "<center>您的文件已经上传完毕 上传图片预览: </center><br><center><img src='$uploadfile'></center>";
echo"<br><center><a href='javascript:history.go(-1)'>继续上传</a></center>";
}//生成目标文件的文件名
else{
echo "上传失败!";
}
}
}
?>
问:文件上传失败,为什么它(文件)还能保存到我所指定的文件夹里?
问:为什么文件上传会失败?看一看代码有什么问题,还是我的路径写的有问题
$patch="http://127.0.0.1/mysite/untitled.php/";//程序所在路径 这一句代码不是很了解 解释一下吧
问:改成$uploaddir = "./upload/";上传的时候,页面会显示以下的内容:
Warning: move_uploaded_file(./upload/CR-fxIgzY.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in D:\My Documents\phpnow\htdocs\mysite\two.php on line 44 但文件不能保存了
烦人啊 展开
5个回答
展开全部
<?php
//$uploaddir = "D:My Documents/phpnow/htdocs/mysite/_notes/upload/";原代码,路径少了个斜杠,按道理是错误的.
$uploaddir = "D:/My Documents/phpnow/htdocs/mysite/_notes/upload/";//设置文件保存目录 注意包含/
$type=array("jpg","gif","bmp","jpeg","png");//设置允许上传文件的类型
// 下面这句,程序中都没有用到,估计是用来做预览图片的浏览路径的.
//因为,如果是在服务器上面,使用$uploaddir这种本地路径(相对于http://这种网络路径)的地址来
//访问是访问不到的,所以应该改成这样如下,相应的图片的预览路径也有一点改动
$patch="http://127.0.0.1/mysite/_notes/upload/";//程序所在路径
function fileext($filename)
{
return substr(strrchr($filename, '.'), 1);
}//获取文件后缀名函数
function random($length)
{
$hash = 'CR-';
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
$max = strlen($chars) - 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i < $length; $i++)
{
$hash .= $chars[mt_rand(0, $max)];
}
return $hash;
}
$a=strtolower(fileext(@$_FILES['file']['name']));//生成随机文件名函数
if(!in_array(strtolower(fileext(@$_FILES['file']['name'])),$type))
{
$text=implode(",",$type);
echo "您只能上传以下类型文件: ",$text,"<br>";
}//判断文件类型
else
{
$filename=explode(".",$_FILES['file']['name']);
do
{
$filename[0]=random(6); //设置随机数长度
$name=implode(".",$filename); //$name1=$name.".Mcncc";
$uploadfile=$uploaddir.$name;
}
while(file_exists($uploadfile));
//原代码是先移动文件(已经移动,原文件不存在了),后判断是否是通过上传的文件(当然了,文件都没了,怎么还会是true呢.),
if(is_uploaded_file(@$_FILES['file']['tmp_name'])&&move_uploaded_file(@$_FILES['file']['tmp_name'],$uploadfile)){
//输出图片预览,注意img标签的src,有改动
echo "<center>您的文件已经上传完毕 上传图片预览: </center><br><center><img src='{$patch}{$name}'></center>";
echo"<br><center><a href='javascript:history.go(-1)'>继续上传</a></center>";
}else{
echo "上传失败!";
}
}
?>
//$uploaddir = "D:My Documents/phpnow/htdocs/mysite/_notes/upload/";原代码,路径少了个斜杠,按道理是错误的.
$uploaddir = "D:/My Documents/phpnow/htdocs/mysite/_notes/upload/";//设置文件保存目录 注意包含/
$type=array("jpg","gif","bmp","jpeg","png");//设置允许上传文件的类型
// 下面这句,程序中都没有用到,估计是用来做预览图片的浏览路径的.
//因为,如果是在服务器上面,使用$uploaddir这种本地路径(相对于http://这种网络路径)的地址来
//访问是访问不到的,所以应该改成这样如下,相应的图片的预览路径也有一点改动
$patch="http://127.0.0.1/mysite/_notes/upload/";//程序所在路径
function fileext($filename)
{
return substr(strrchr($filename, '.'), 1);
}//获取文件后缀名函数
function random($length)
{
$hash = 'CR-';
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
$max = strlen($chars) - 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i < $length; $i++)
{
$hash .= $chars[mt_rand(0, $max)];
}
return $hash;
}
$a=strtolower(fileext(@$_FILES['file']['name']));//生成随机文件名函数
if(!in_array(strtolower(fileext(@$_FILES['file']['name'])),$type))
{
$text=implode(",",$type);
echo "您只能上传以下类型文件: ",$text,"<br>";
}//判断文件类型
else
{
$filename=explode(".",$_FILES['file']['name']);
do
{
$filename[0]=random(6); //设置随机数长度
$name=implode(".",$filename); //$name1=$name.".Mcncc";
$uploadfile=$uploaddir.$name;
}
while(file_exists($uploadfile));
//原代码是先移动文件(已经移动,原文件不存在了),后判断是否是通过上传的文件(当然了,文件都没了,怎么还会是true呢.),
if(is_uploaded_file(@$_FILES['file']['tmp_name'])&&move_uploaded_file(@$_FILES['file']['tmp_name'],$uploadfile)){
//输出图片预览,注意img标签的src,有改动
echo "<center>您的文件已经上传完毕 上传图片预览: </center><br><center><img src='{$patch}{$name}'></center>";
echo"<br><center><a href='javascript:history.go(-1)'>继续上传</a></center>";
}else{
echo "上传失败!";
}
}
?>
展开全部
$uploaddir = "./upload/";
if(!file_exists($uploaddir)){//检查上传文件目录是否存在
mkdir($uploaddir);//创建目录
}
if(is_uploaded_file(@$_FILES['file']['tmp_name'])){ //检查上传文件是否存在
move_uploaded_file($_FILES['file']['tmp_name'],$uploaddir);//移至指定目录
}
if(!file_exists($uploaddir)){//检查上传文件目录是否存在
mkdir($uploaddir);//创建目录
}
if(is_uploaded_file(@$_FILES['file']['tmp_name'])){ //检查上传文件是否存在
move_uploaded_file($_FILES['file']['tmp_name'],$uploaddir);//移至指定目录
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
is_uploaded_file要在move_uploaded_file之前运行,是用来判断文件来源是否正确合法,是否通过HTTP POST上传 而你的上传函数move_uploaded_file是运行成功的先,所以文件已保存
$patch 是你的untitled.php文件地址,127.0.0.1是你本地主机名,也可换成localhost
$uploaddir变成相对路径的话那么上传目录一定要在站点以内,在站点外要用绝对路径才行
我看你的应该是在站点内,还是有问题的话肯定是你的路径有误,与你执行文件位置不相对应
$patch 是你的untitled.php文件地址,127.0.0.1是你本地主机名,也可换成localhost
$uploaddir变成相对路径的话那么上传目录一定要在站点以内,在站点外要用绝对路径才行
我看你的应该是在站点内,还是有问题的话肯定是你的路径有误,与你执行文件位置不相对应
追问
我是在虚拟主机上测试的 upload空文件夹在:D:My Documents/phpnow/htdocs/mysite/_notes/的目录下 在站点内 帮忙测试一下 成功了我在加20分 谢谢
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
move_uploaded_file($img["tmp_name"], $destination); 注意你传的参数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-02-17
展开全部
你把upload前面的斜杠去掉看看行吗??
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询