【问题标题】:Recursive directory with mkdir not working带有 mkdir 的递归目录不起作用
【发布时间】:2014-01-05 21:04:49
【问题描述】:

我正在上传单个类别中的多张图片,我想将每组图片存储在我的“images/”目录中的一个唯一目录中,如下所示:

'images/unique_category/image1.jpg'

我有以下代码,但它没有创建目录。我怀疑这与将递归参数设置为“真”有关,我相信我已经这样做了。我是不是用错了 mkdir 函数?

谢谢!

$unique_directory = "../images/".$_POST['item_name'];
if (is_dir($unique_directory)
  {
  move_uploaded_file($_FILES["file"]["tmp_name"],
  $unique_directory."/".$_FILES["file"]["name"]);
  echo "Stored in: " . $unique_directory."/".$_FILES["file"]["name"];
  }
else
  {
  mkdir($unique_directory, 0777, true);
  move_uploaded_file($_FILES["file"]["tmp_name"],
  $unique_directory."/".$_FILES["file"]["name"]);

【问题讨论】:

  • 您的 PHP 错误日志中是否有任何错误?
  • 一方面,您在move_uploaded_file($_FILES["file"]["tmp_name"], 的末尾有一个逗号,它应该以分号move_uploaded_file($_FILES["file"]["tmp_name"]; 结尾但是它并不止于此;那个逗号可能是有原因的,你没有告诉它放在哪里。尝试先用分号替换它。
  • @Fred-ii- 你刚才放在那里的东西会导致错误。他的语法是正确的。第一个参数是文件名,第二个是新的目的地。
  • 是的,我在错误日志中确实有错误:PHP 警告:mkdir(): Permission denied in /Applications/MAMP/htdocs/PDO_test/php_scripts/upload_form.php on line 41 [05-Jan -2014 21:53:52 Europe/Berlin] PHP 警告:move_uploaded_file(images/Test/IMG_0003.JPG):无法打开流:/Applications/MAMP/htdocs/PDO_test/php_scripts/upload_form.php 第 43 行的权限被拒绝[05-Jan-2014 21:53:52 Europe/Berlin] PHP 警告:move_uploaded_file():无法在 /Applications 中将“/Applications/MAMP/tmp/php/phpBDODjp”移动到“images/Test/IMG_0003.JPG” /MAMP/htdocs/PDO_test/php_scripts/upload_form.php on
  • 是的,我的错。现在才注意到@Anyone 看到两条这样的线,一条在一条下面,感到很困惑。

标签: php mkdir directory uploading


【解决方案1】:

来,试试这个。我在我的(托管)服务器上对其进行了测试,并且可以正常工作。然而,我通过将文件放在它的根目录中对其进行了测试,并使用images 而不是../images 作为$unique_directory 变量。

我还使用了chmod命令,除了其他功能,因为其他方法不起作用。

注意:如果可能,请尝试将0777 更改为0755,因为使用0777 不是最安全的设置。

<?php
$filename = $_POST['item_name'];
$unique_directory = "../images";

if (!is_dir($unique_directory . '/' . $filename)){

    mkdir($unique_directory . "/" . $filename);

    chmod("$unique_directory" . "/" .$filename, 0777);
}

if (is_dir($unique_directory))
  {
  move_uploaded_file($_FILES['file']['tmp_name'], $unique_directory . "/" . $filename . "/" . $_FILES['file']['name']);
  echo "1) Stored in: " . $unique_directory . "/" . $filename . "/" . $_FILES['file']['name'];
  }

else
  {
  move_uploaded_file($_FILES['file']['tmp_name'], $unique_directory . "/" . $filename . "/" . $_FILES['file']['name']);
  echo "2) Stored in: " . $unique_directory . "/" . $filename . "/" . $_FILES['file']['name'];
}
?>

【讨论】:

  • 不客气,很高兴我能帮上忙。 @user2913891 干杯
猜你喜欢
  • 1970-01-01
  • 2018-09-07
  • 2017-01-09
  • 1970-01-01
  • 2013-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多