【问题标题】:How to change the upload path of the file in the file system?如何更改文件系统中文件的上传路径?
【发布时间】:2016-05-20 06:43:11
【问题描述】:

我有一个使用 PHP 和 PHP 函数的自定义填写表单的自定义页面模板,用户可以输入他们的基本信息并上传文件。该文件将直接上传到文件系统中。

现在,我要重命名文件取决于用户的姓氏和名字,例如这个 lastname_firstname。而且,我想将上传文件保存在 wp-content 之外(比如说我的桌面或 wp-content 之外的文件夹),并限制用户可以上传什么类型的文件。如何实现这些?

这里是 PHP sn -p 如何在文件系统中上传文件

function upload_user_file($file = array()){
    require_once(ABSPATH . 'wp-admin/includes/admin.php');
      $file_return = wp_handle_upload($file, array('test_form' => false));
      if(isset($file_return['error']) || isset($file_return['upload_error_handler'])){
          return false;
      } else {
          $filename = $file_return['file'];
          $attachment = array(
              'post_mime_type' => $file_return['type'],
              'post_title' => preg_replace('/\.[^.]+$/', '', basename($filename)),
              'post_content' => '',
              'post_status' => 'inherit',
              'guid' => $file_return['url']
          );

          $attachment_id = wp_insert_attachment($attachment, $file_return['url']);

          require_once(ABSPATH . 'wp-admin/includes/file.php');
          $attachment_data = wp_generate_attachment_metadata($attachment_id, $filename);
          wp_update_attachment_metadata($attachment_id, $attachment_data);

          if(0 < intval($attachment_id)){
            return $attachment_id;
          }
      }
      return false;
}

【问题讨论】:

  • 上传后使用move_uploaded_file()

标签: php wordpress file filepath custom-wordpress-pages


【解决方案1】:

您的问题已使用自定义代码解决。请用这个脚本替换你的函数。

首先,您在 wp_content 文件夹附近创建具有“静态”文件夹名称的文件夹。 然后将此代码放在function.php文件中。

`

function upload_user_file($file = array(), $first_name='',$last_name=''){
   $root= dirname(dirname(dirname(dirname(realpath(__FILE__)))));
   $path =$root.'/static/';

    if(!empty($_FILES["file"]["name"])){

            $file_name        = $last_name.'_'.$first_name.$_FILES["file"]["name"];
            $tmp_file     = $_FILES["file"]["tmp_name"];
            move_uploaded_file($tmp_file,"$path".$file_name);

    }
}

`

【讨论】:

  • 在您的代码中,缺少 $attachment_id$attachment_id 很重要,因为它将用于获取每个上传文件的文件名
  • 请在您的建议代码中包含$attachment_id
【解决方案2】:

打开位于 WordPress 安装根目录的 wp-config.php 文件,然后添加以下代码

define('UPLOADS', 'wp-content/myimages');

确保在该行之前添加此代码

require_once(ABSPATH.’wp-settings.php’);

如果该目录不存在,只要 wp-content 文件夹是可写的,WordPress 就会自动创建它。否则,您可以通过 FTP、cPanel 等自行创建文件夹

您还可以更改上传的组织方式。如果您打开上传文件夹,您会注意到文件默认按年份排序。您可以更改文件组织,以便将所有媒体文件转储到一个文件夹中。转到“设置”>“媒体”并取消选中“将我的上传内容整理到基于月份和年份的文件夹中”。

它不仅可以让您的 URL 更简单,还可以让您更轻松地在一个地方查看所有文件,而不必对月份和年份目录进行排序。

【讨论】:

  • 我不想更改上传的整个媒体/文件的路径。我需要的是从自定义页面模板更改上传文件的路径。
猜你喜欢
  • 2017-10-28
  • 2015-01-15
  • 2010-11-17
  • 1970-01-01
  • 1970-01-01
  • 2017-06-14
  • 1970-01-01
  • 1970-01-01
  • 2023-02-20
相关资源
最近更新 更多