php ftp 建立多个目录

2024-04-03

这是我的 PHP 代码。它实际上工作得很好:

            $newftpdir_parent   = date('Ymd');                              // YYYYMMDD
            $newftpdir_child    = $ext_folder;                              // username
            $newftpdir          = $newftpdir_parent.'/'.$newftpdir_child;   // YYYYMMDD/username
            $conn_id            = ftp_connect($uptoftp_server);
            ftp_login($conn_id, $uptoftp_username, $uptoftp_pass);

            $path_of_storage    = $uptoftp_path_abs.'/'.$uptoftp_path_rel; // /var/www/uploads
            if( !@ftp_chdir($conn_id, $path_of_storage.'/'.$newftpdir_parent) ){
                  ftp_mkdir($conn_id, $path_of_storage.'/'.$newftpdir_parent);
                  ftp_chmod($conn_id, 0777, $path_of_storage.'/'.$newftpdir_parent);
            }
            if( !@ftp_chdir($conn_id, $path_of_storage.'/'.$newftpdir) ){
                  ftp_mkdir($conn_id, $path_of_storage.'/'.$newftpdir);
                  ftp_chmod($conn_id, 0777, $path_of_storage.'/'.$newftpdir);
            }

            ftp_chdir($conn_id, $path_of_storage.'/'.$newftpdir);

            ftp_put($conn_id, $file_name, $filetoftp, FTP_ASCII);

            ftp_close($conn_id);

它将文件从本地服务器上传到远程 ftp 服务器。正如你所看到的,有 2 个丑陋的 if 条件检查目录是否存在,如果不存在,我们创建它并移入其中。再次针对子目录。由于我现在希望我的目录(在 ftp 服务器上)看起来像 YYYY/MM/DD/username 而不是 YYYYMMDD/username,因此我需要再创建两个这样的 if 块。它工作得很好,但它看起来不干净,我有点疯狂......我想知道是否有更好的方法来做到这一点,因为 ftp_mkdir() 无法创建多个目录(其中包含子目录的目录)?

例如,仅考虑 /uploads/ 目录存在,而不存在 /2013/ 以及子目录 /06/ 和 /11/ :

ftp_mkdir($conn_id, '/var/www/uploads/2013/06/11');

returns:

Warning: ftp_mkdir() [function.ftp-mkdir]: /var/www/uploads/2013/06/11: No such file or directory in /home/blabla/www/test.php on line 18

<?php

// function
function ftp_mksubdirs($ftpcon,$ftpbasedir,$ftpath){
   @ftp_chdir($ftpcon, $ftpbasedir); // /var/www/uploads
   $parts = array_filter(explode('/',$ftpath)); // 2013/06/11/username
   foreach($parts as $part){
      if(!@ftp_chdir($ftpcon, $part)){
         ftp_mkdir($ftpcon, $part);
         //ftp_chmod($ftpcon, 0775, $part);
         ftp_chdir($ftpcon, $part);
      }
   }
}

// usage
$path_of_storage = '/var/www/uploads';
$newftpdir = '2013/06/11/username';

$conn_id = ftp_connect($ftpserver);
ftp_login($conn_id, $login, $pass);
ftp_mksubdirs($conn_id,$path_of_storage,$newftpdir);
ftp_close($conn_id);

?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php ftp 建立多个目录 的相关文章

  • 通过页面打开 mysql 连接是完全鲁莽的吗?

    当查询数据库时 是否会感到极度偏执 每次必须完成新查询时 我都会打开和关闭 mysql 连接 我担心 尤其是启用 ajax 的页面 这会导致性能大幅下降 我应该继续使用此方法 还是至少在每个页面 而不是每个查询 中打开和关闭连接一次 顺便说
  • 如何导出从 HTML DOM 解析器检索到的所有图像?

    我想要 使用从我的网站获取所有图像PHP 简单 HTML DOM 解析器 http simplehtmldom sourceforge net 并将它们全部导出到我的桌面ALL立刻 Not右键单击保存或屏幕截图 OPTIONAL 保存所有h
  • LinkedIn OAuth 缺少必需参数“client_id”

    我正在使用 LinkedIn API 并尝试发出请求 但是当我尝试获取 accesstoken 时 我在 json 打印中收到以下错误 Array error gt missing parameter error description g
  • 将 Dwolla 与 PHP 及其 API 集成

    前言 好吧 我过去使用过 API 例如 TwitterAPI 但我总是使用库和一些文档来帮助我进行连接和检索令牌 我对 API 的工作原理有了基本的了解 好的 我尝试了多种使用 PHP 请求 dwolla API 的方法 我尝试过制作一个
  • 使用php.ini、.htaccess和zlib.output压缩js、css和php文件

    我一直在尝试使用 gzip 压缩我的网站 尽管我的服务器不允许我使用 mod deflate 所以我在这里找到了替代解决方案 http www warpconduit net 2010 10 23 enabling gzip compres
  • 如何防止在以 .php 结尾的 URL 后添加其他字符串?

    我们网站的团队刚刚发现 任何用户都可以在以 php 扩展名结尾的 URL 后面添加斜杠 然后添加任何字符串 并且仍然可以访问相同的原始页面 例如 我可以通过以下方式访问 www mydomain com index php www mydo
  • PHP:正则表达式删除`a`或`–?

    我使用这个正则表达式从字符串输入中删除所有标点符号 pg url preg replace W pg url 但有些符号或特殊字符我无法删除它们 例如 当我将其传递到我的数据库注入时 它会变成 or 我怎样才能摆脱这些奇怪的东西 Thank
  • OSX - Composer - lib-openssl 要求

    自从上次 XCode 更新到版本 7 3 1 以来 我遇到了以下问题composer and openssl在 OSX 上 更新之前有效 我尝试通过作曲家更新来更新软件包 套餐 ricardoper twitteroauth 需要lib o
  • 无法使用php连接到远程数据库

    我在 Windows 中安装了 Xampp 并且正在使用 Laravel 5 3 创建一个应用程序 我正在尝试在本地网络上的另一台服务器上执行查询 但是当我尝试这样做时 MySql 服务器使用以下命令对本地服务器上的用户进行身份验证 use
  • PHP、MySQL、PDO 事务 - fetchAll() 可以在 commit() 之前吗?

    更多交易问题 我现在拥有的是一堆串在一起的查询 如果有任何失败 都会手动反转 代码块1 stmt1 db gt prepare Update table1 set col col 1 if stmt1 db gt execute stmt2
  • PHP - 计算特定数组值

    如何计算数组中值等于常量的元素的数量 例子 myArray array Kyle Ben Sue Phil Ben Mary Sue Ben 如何直接知道里面有多少个 Ben array array Kyle Ben Sue Phil Be
  • 检查 DynamoDB 中是否存在表的最佳方法是什么?

    检查 DynamoDb 中是否存在表的最佳方法是什么 如果代码是 PHP 语言 我将不胜感激 要么活跃 要么不活跃 稍后作为错误代码 400 的各种情况的示例添加 检查表是否存在很容易 它可以有以下之一 表状态 gt 创建 活动 删除或更新
  • 如果菜单项超过 90 个菜单项的限制,Wordpress 将删除我的菜单项 -

    我想在我的菜单中添加更多项目 我的菜单在 WordPress 菜单 管理 中至少包含 90 个项目 我想添加更多项目 但发现其他项目会自动删除 有什么解决办法吗 很有可能 但不是 100 这是 PHP 限制 而不是 WP 您可以通过查看 p
  • GoDaddy 服务器上的 CodeIgniter 和 URI 问题

    我似乎无法在 GoDaddy 上正确设置 CodeIgniter 我尝试在 wecome 控制器内创建一个新函数 但我无法在任何地方访问它 http domain com test No response lt why doesn t th
  • Twitter APi“代码”:215,“消息”:“错误的身份验证数据

    接收错误 code 215 message 错误的身份验证数据 in my page var dump page 我读到 Friends exist 不再适用于 1 1 版本 因此我需要使用 Friends lookup 来比较一个 Twi
  • 排除“解析错误,意外的‘>’”错误[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我收到这个
  • mysql REGEXP 不匹配

    我有一个正则表达式 旨在捕获字符串中的电话号码 1 s d 3 s d 3 s d 4 我尝试使用以下查询在 MySql 数据库中查询此正则表达式 SELECT FROM everything instances meta AS m WHE
  • 未找到“google\appengine\CreateUploadURLRequest”类

    我正在使用谷歌云CORE PHP使用简单的 HTML 表单上传文件但我被困在CloudStorageTools班级 它会抛出连续的跟随错误 致命错误 类 找不到 google appengine api cloud storage Clou
  • 使用php获取多个复选框名称/id

    如何使用 PHP 获取提交时多个选定复选框的名称或 ID 以下是示例表格 谢谢
  • 在 PHP 中获取日期和数字工作日

    我正在用 PHP 开发一个应用程序 我需要使用日期和工作日的数字表示 我尝试过以下方法 today date Y m d number date N strtotime today echo Today today weekday numb

随机推荐

  • 是否有标准方法可以在编译时确定系统是 32 位还是 64 位?

    我需要设置 ifdef 检查条件编译 我想自动化该过程 但无法指定目标操作系统 机器 有什么方法可以让预编译器判断它是在 32 位还是 64 位上运行吗 解释 我需要定义一个 64 位大小的类型 在 64 位操作系统上它是一个 long 在
  • 在 Stylus 中访问 JavaScript 的原生数学库

    我最近问了一个问题是否可以用手写笔计算平方根 https stackoverflow com questions 21033346 得到这个问题的答案后 我想知道是否有一种方法可以完全访问 Stylus 中的 JavaScript 原生数学
  • 具有 3 个用户连接的 WebRTC

    我现在正在实施源代码WebRTC 示例 https github com webrtc samples tree gh pages src content peerconnection audio通过使用网状拓扑成为 3 个用户连接 但是
  • 为什么OutputStream存在write(int b)方法? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么 Java OutputStream write 接受整数但写入字节 https stackoverflow com questions 1407893 why java outputstrea
  • 我们如何检查表是否有索引?

    我们如何检查该表是否有索引 如果有如何找到表的特定列的索引 问候 库马尔 在 SQL Server Management Studio 中 您可以沿着树导航到您感兴趣的表并打开索引节点 双击该节点中的任何索引将打开属性对话框 其中将显示索引
  • 图像上沿折线/曲线的点的有序列表

    我有一些带有折线 多重曲线组合的图像 我的目标是恢复沿着这些折线 多重曲线的点的有序列表 使用 opencv ConnectedComponents 我可以隔离图像中的每条折线 曲线 然后尝试通过以下步骤获取有序的点序列 num label
  • With 函数中的多个对象表达式循环遍历所有工作表

    我有一个由两张表组成的 Excel 电子表格 Sheet1 and Sheet2 在每张纸上我都有一个Button 1 为了将此按钮移动到Range D9 E11 在两张表中 我使用以下 VBA 来引用解决方案here https stac
  • Angular 2 找不到我的功能模块中声明的组件

    我很难让模块在 Angular 2 中工作 我创造了a plunk http plnkr co edit gJup4zH7v4CoFNC8k5kZ p preview这说明了问题所在 在 plunk 中 您会看到我有 app module
  • 如何将文本附加到 d3.js 中的一行

    我正在尝试将文本附加到条形图上创建的线条中 问题是我可以看到文本元素已创建 但它没有显示在 svg 上的任何地方 我附加文本的代码部分 var line svg append line attr x1 function return x l
  • 是否可以在 Android 设备上运行容器?

    我是一名移动开发人员 最近擅长使用 docker 容器 我正在为我的研究生项目开发容器架构 该架构的模块之一需要在 Android 设备上运行 但我找不到有关如何在 Android 设备上运行容器的信息 它可以是一些简单的东西 比如用 py
  • 计算硬盘吞吐量

    我的应用程序创建了一个 2GB 文件 需要选择系统上速度最快且有足够空间的驱动器 我尝试通过创建文件 设置长度 然后按顺序向其中写入数据来计算吞吐量 如下所示 FileInfo file null var drives DriveInfo
  • PIL:将模式“I”的图像转换为“RGB”会产生全白图像

    据我所知 这个问题末尾的图像是模式 I 的 PNG 它代表 索引 我正在尝试创建一个缩略图 并使用 PIL 将其保存为 JPG 然而 我是否离开了mode独自一人 PIL 不会让我错误地调整它的大小unable to generate th
  • iloc 给出“IndexError:单个位置索引器超出范围”

    我正在尝试使用以下内容对一些信息进行编码以读入机器学习模型 import numpy as np import pandas as pd import matplotlib pyplot as py Dataset pd read csv
  • 当子模块存在时,Git diffing 在 Windows 上崩溃

    Using msysgit http code google com p msysgit 在窗户上 每当我这样做时git diff在具有一个或多个子模块的存储库上 命令提示符 以及 PowerShell 崩溃 这是已知的 但是有修复 解决方
  • AFNetworking 返回 NSCFData; registerHTTPOperationClass 的问题[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我是 AF
  • php sprintf() 包含外来字符?

    接缝就像 sprintf 有外来字符的问题 还是我做错了什么 看起来它在从字符串中删除像 这样的字符时有效 有必要吗 我希望以下几行能够正确对齐以生成报告 2011 11 27 A1823 Ref Leif 12 873 00 18 98
  • git clone,忽略目录

    我正在尝试在 WordPress 安装上测试一些东西 这样做时 我想快速复制该存储库 但是 上传目录 wp content uploads 很大 所以我想忽略它 注意 我不想一直 gitignore 这个目录 只是为了这个场景 基本上 我想
  • Bash 测试中的复合条件组[重复]

    这个问题在这里已经有答案了 我想在 Bash 中设置一些条件组if陈述 具体来说 我正在寻找类似以下内容的内容 if
  • 下载源代码时 AWS Codebuild 失败。消息:找不到参考

    当使用 git 标签作为源版本触发构建时 使用 AWS Codebuild 正常运行数月的 CI CD 管道突然开始失败 通过拉取请求 pr 触发的构建继续正常工作 任何帮助将非常感激 我在 CodeBuild 团队工作 我们已经回滚了可能
  • php ftp 建立多个目录

    这是我的 PHP 代码 它实际上工作得很好 newftpdir parent date Ymd YYYYMMDD newftpdir child ext folder username newftpdir newftpdir parent