如何更改文件系统中文件的上传路径?

时间:2016-05-20 06:43:11

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

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

现在,我想重命名文件取决于用户的姓和名,就像这个lastname_firstname。而且,我想将上传文件保存在wp内容之外(让我们说在我的桌面或wp-content之外的文件夹中)并限制用户可以上传的文件类型。如何实现这些?

这是PHP代码段如何在文件系统中上传文件

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;
}

2 个答案:

答案 0 :(得分:0)

使用自定义代码解决了您的问题。请用这个脚本替换你的功能。

首先使用&#34; static&#34;创建文件夹。 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);

    }
}

`

答案 1 :(得分:-1)

打开你的WordPress安装根目录下的wp-config.php文件,并添加以下代码

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

确保在行

之前添加此代码
require_once(ABSPATH.’wp-settings.php’);

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

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

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