使用 move_uploaded_file() 时如何在 PHP 中创建目标(文件夹)?
Posted
技术标签:
【中文标题】使用 move_uploaded_file() 时如何在 PHP 中创建目标(文件夹)?【英文标题】:How to create destination (Folder) in PHP while using move_uploaded_file()? 【发布时间】:2011-05-22 01:27:38 【问题描述】:我想用 php 上传文件,我使用 move_uplload_files 将它们复制到我想要的目标文件夹,一切正常:
if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], './uploades/'))
die("success");
else
die("error");
但是当我尝试这个时
$rand = chr(rand(97, 122)). chr(rand(97, 122)). chr(rand(97, 122));
if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], './uploades/'.$rand))
die("success");
else
die("error");
我会收到错误,看起来 move_uploaded_files 无法创建文件夹。我该怎么做?
基本上我正在寻找一种方法来做到这一点,例如 file_put_contents()
,如果不存在则创建路径。
【问题讨论】:
【参考方案1】:使用mkdir()
。
如果您需要创建多个文件夹,例如通过传递a/b/c
,请将第三个参数设置为TRUE
。
你可以测试它是否已经存在,如果不存在则添加......
$path = 'abc';
if ( ! is_dir($path))
mkdir($path);
【讨论】:
@mkdir()
会抑制错误,或者最好的方法是file_exists
所以首先我应该看看它是否存在,如果它不存在则创建它对吗?
@Ragez:我认为应该像file_put_contents()
那样做一些事情,如果它不存在,它会自动创建。
@Omeid Herat 有,在上面:P
@Omeid:我想这样,但到目前为止我还没有运行那个函数【参考方案2】:
使用这样的东西:
$folder = "uploads";
if(!is_dir($folder)) mkdir($folder);
is_dir()
检查文件夹是否存在。
【讨论】:
【参考方案3】:这对我有用:
$path = "upload/";
$name = $_FILES["file"]["name"];
// Remove dangerous characters from filename.
$name = str_replace('..', '', $name);
$name = str_replace('/', '', $name);
$name = str_replace('\\', '', $name);
if (($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
&& ($_FILES["file"]["size"] < 2000000))
if ($_FILES["file"]["error"] > 0)
echo "Error " . $_FILES["file"]["error"] . "<br>";
else
if(file_exists($path.$name))
echo "$path$name already exists. ";
else
@mkdir($path, 0666, true); // Create non-executable upload folder(s) if needed.
move_uploaded_file($_FILES["file"]["tmp_name"], $path.$name);
echo "Stored in: $path$name";
else
echo "Invalid file. Allowed are JPG smaller than 2 MB.";
【讨论】:
【参考方案4】:首先使用mkdir()
创建目录
$rand = chr(rand(97, 122)). chr(rand(97, 122)). chr(rand(97, 122));
mkdir('./uploades/'.$rand);
if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], './uploades/'.$rand))
die("success");
else
die("error");
【讨论】:
【参考方案5】:if($_FILES['file_up']['type']=='image/jpeg' || $_FILES['file_up']['type']=='image/png' || $_FILES['file_up']['type']=='image/gif')
move_uploaded_file($_FILES['file_up']['tmp_name'],'uploads/'.time().$_FILES['file_up']['name']);
else
echo "Upload only image file..";
【讨论】:
请编辑您的答案并格式化代码以使其可读以上是关于使用 move_uploaded_file() 时如何在 PHP 中创建目标(文件夹)?的主要内容,如果未能解决你的问题,请参考以下文章
PHP在使用move_uploaded_file函数移动文件时一直失败
如何避免 move_uploaded_file() 在按钮单击时刷新页面
PHP move_uploaded_file无法在公共服务器上运行