急!!!关于PHP move_upload_file()。如何把上传的文件保存在指定的目录下
发布网友
发布时间:2022-04-07 10:08
我来回答
共4个回答
懂视网
时间:2022-04-07 14:29
php怎么上传文件保存到本地?
php作为后端接受上传的图片还是很简单的,需要用到FILES,当客户端或web端向后端post图片时,我们可以用FILES,当客户端或web端向后端post图片时,我们可以用_FILE接收图片,然后存储在临时缓冲区中,最后用move_upload_file函数保存在本地。使用Wampserver服务器,则缓存文件放在tmp文件夹下。
//html代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</head>
<body>
<form action="./uploadheadimg.php" method="post" enctype="multipart/form-data">
<!-- <input type="hidden" name="MAX_FILE_SIZE" value='176942' /> -->
请选择您要上传的文件:<input type="file" name='myfile' />
<!-- <input type="file" name="myFile" accept="image/jpeg,image/gif,image/png"/><br /> -->
<input type="submit" value="上传文件" />
</form>
</body>
</html>
html界面展示
2.//uploadheadimg.php代码
<?php
$imgname = $_FILES['myfile']['name'];
$tmp = $_FILES['myfile']['tmp_name'];
$filepath = 'photo/';
if(move_uploaded_file($tmp,$filepath.$imgname.".png")){
echo "上传成功";
}else{
echo "上传失败";
}
?>
在代码中需要修改$filepath变量的值,其值建立一个文件夹,用于存放上传的文件。
推荐:《PHP教程》
附
PHP编程语言中的常见的$_FILES系统函数用法有:
$_FILES[‘myFile’][‘name’] 显示客户端文件的原名称。
$_FILES[‘myFile’][‘type’] 文件的 MIME 类型,例如"image/gif"。
$_FILES[‘myFile’][‘size’] 已上传文件的大小,单位为字节。
$_FILES[‘myFile’][‘tmp_name’] 储存的临时文件名,一般是系统默认。
$_FILES[‘myFile’][‘error’] 该文件上传相关的错误代码。
以下为使用$_FILES[‘myFile’][‘error’] 出现错误代码的意思:
0; 文件上传成功。
1; 超过了文件大小php.ini中即系统设定的大小。
2; 超过了文件大小
MAX_FILE_SIZE 选项指定的值。
3; 文件只有部分被上传。
4; 没有文件被上传。
5; 上传文件大小为0。
热心网友
时间:2022-04-07 11:37
没什么问题。
检查目标文件是不是存在,需要不存在。
检查目标目录是不是存在,需要存在。
如果是APACHE,检查APACHE有没有设置可以写入那个目录,找个保证能写入的目录试试。
检查执行APACHE或者IIS的用户是否有权限写入那个目录。
把目标(你的$str写成绝对路径试试,用realpath函数)追问如果 我直接在这两个upload_file.php和upfile.php的同一目录下 建立一个upload文件夹,不用mkdir($str)建立文件目录,这样能够存入upload文件夹中,但是用mkdir($str)建立文件目录,就出现错误信息。
热心网友
时间:2022-04-07 12:55
文件夹没有写的权限,mkdir($str);
改为mkdir($str,'777’);
再检查上一级目录的权限问题追问改了。。但是还是出现上面的错误。
热心网友
时间:2022-04-07 14:30
<html>
$str = strtok($filesname,"."); //这是可以执行的,为文件名去掉小数点和小数点以后部分的字符串
mkdir($str);//这也是可以执行的,创建了一个用上传的文件名去掉后缀为名字的文件夹
move_uploaded_file($_FILES["file"]["tmp_name"],$str);
//此处的$str是abc,$str需要是 文件夹名/文件名.后缀 的格式,比如换成./'.$str.'/'.$filesname就可以执行了,也可以写成下面那样
<html>
<body>
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">ÎļþÃû:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="btn" value="Ìá½»" />
</form>
</body>
</html>
<?php
//echo '1'.$_FILES["file"]["size"];
if(strlen($_FILES["file"]["type"]) <= '0'){
exit('ÇëÑ¡ÔñͼƬ');
}
if ((($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 2000000))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
$filesname = $_FILES["file"]["name"];
$str='upload_img';
if(!file_exists($str)){
mkdir($str);
}
move_uploaded_file($_FILES["file"]["tmp_name"],'./'.$str.'/'.$filesname);
echo "Stored in: ". $str.'/'.$_FILES["file"]["name"];
}
}
else
{
echo"fail";// "lInvalid fe";
}
?>