图像不会上传到WordPress中专门创建的文件夹

时间:2017-02-12 00:08:30

标签: php wordpress

我尝试创建一个文件夹来存储我的所有图片,但不会在我安装的主题中的特定上传文件夹中上传。

这是我的代码:

if(isset($_FILES['file']['tmp_name']))
    {
        $num_files = count($_FILES['file']['tmp_name']);//count file upload


        for($i=0; $i<$num_files; $i++)
        {
            if(!is_uploaded_file($_FILES['file']['tmp_name'][$i]))
            {
                echo "no file upload!!";
            }else
            {
                if(@copy($_FILES['file']['tmp_name'][$i], "/upload/".$_FILES['file']['name'][$i]))
                {
                    $path = "upload/".$_FILES['file']['name'][$i];
                    //$sql = "insert into tblImage value ('".$path."')";

                }else
                {
                    echo "cant upload";
                }
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

很难弄明白确切出了什么问题,因为我不知道你的设置,但尝试这些事情:

  1. 在这种情况下,不建议使用@copy,尤其是当您试图弄清楚出了什么问题时。复制将在失败时返回false并在特殊情况下显示其他错误消息,除非您在@前面添加前缀。例如,如果您的磁盘已满,它将以静默方式失败。仅copy可能对此更有用。
  2. 您的文件命名至少难以破译。具体来说,您使用的路径是什么?像copy这样的PHP文件操作需要精确的路径信息。您的/upload/之后的upload/路径指的是某个相对于某个地方的相对内容,可能会发生变化。要解决这个问题,找出一条好的绝对路径。如果您要上传到WP上传,请从wp_upload_dir开始,然后从那里构建。
  3. 除非您以后需要复制 来自原始位置,否则移动而不是复制它。请记住,您已将其移至上传文件夹,因此以后仍可在其他地方使用。这也可以使您move_uploaded_file()
  4. 有一些很好的评论(比如来自@kabiir)关于如何调试你所拥有的内容。没有一些调试信息,很难弄明白完全出了什么问题。
  5. 尝试:

    if(isset($_FILES['file']['tmp_name'])) {
        for ($i = 0; $i < count($_FILES['file']['tmp_name']); $i++) {
            $file = $_FILE['file']['tmp_name'][$i];
            error_log('source: ' . $file);
            if (is_uploaded_file($file) && isset($_FILE['file']['name'][$i])) {
                $name = $_FILE['file']['name'][$i];
                error_log('uploaded name: ' . $name);
                $destination = trailingslashit(wp_upload_dir()) . $name;
                error_log('destination: ' . $destination);
                if (!move_uploaded_file($source, $destination)) {
                    echo 'failed to move file.';
                    continue;
                }
                // Now $destination contains where the file was moved to.
            }
        }
    }
    

    此代码将输出到您的日志(或您指向错误日志记录的任何其他位置)源文件+路径,上传的文件名和目标文件+路径,每个文件。

    除非您有非常特别的事情,否则wp_handle_upload()应该照顾您的所有需求而不会重写此内容。完成后,它会调用wp_handle_upload过滤器。挂钩到该过滤器链的末尾以执行SQL或其他任何操作。还有许多插件可以完成你正在尝试做的事情,并且不必自己编写代码。

    作为旁注,你不应该在WP中完全手工创建SQL。使用wpdb类,$wpdb->prepare()功能。这也允许您使用$wpdb->prefix,这是您表格的前缀。 (你<{3}},对吗?)