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

Php 图像不会上载到WordPress中专门创建的文件夹,php,wordpress,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_uplo

我试图创建一个文件夹来存储我的所有图像,但它不会上载到我安装的主题中的特定上载文件夹中

这是我的密码:

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";
                }
            }
        }
    }
if(isset($\u FILES['file']['tmp\u name']))
{
$num_files=count($_files['file']['tmp_name']);//count文件上载

对于($i=0;$i)来说,很难准确地找出问题所在,因为我不知道您的设置,但请尝试以下方法:

  • 在这种情况下,不建议使用
    @copy
    ,尤其是当您试图找出问题所在时。copy会在失败时返回false,并在异常情况下显示其他错误消息,除非您在它前面加上
    @
    。例如,如果磁盘已满,它将以静默方式失败。只需
    copy
    这更有用
  • 您的文件命名至少很难破译。具体来说,您使用的路径是什么?PHP文件操作(如
    copy
    )需要精确的路径信息。您的路径
    /upload/
    ,即
    upload/
    之后的路径,指的是来自某个任意位置的相对路径,该路径可能会发生变化。要解决此问题,请参见图找到一个好的绝对路径。如果你上传到WP uploads,从那里开始构建
  • 除非您以后绝对需要从原始位置复制文件,否则请移动它,而不是复制它。请记住,您将把它移动到uploads文件夹,这样以后它仍然可以在其他地方使用。这也可以帮助您
  • 关于如何调试你所拥有的东西,有一些很棒的评论(比如来自@kabiir的评论)。如果没有一些调试信息,很难准确地找出到底出了什么问题
  • 尝试:

    if(isset($\u FILES['file']['tmp\u name'])){
    对于($i=0;$i
    这段代码将输出到您的日志(或任何您有错误记录指向的地方)每个文件的源文件+路径、上载的文件名和目标文件+路径

    除非你正在做一些非常特别的事情,否则你应该在不重写的情况下照顾好你的所有需求。完成后,它会调用
    wp\u handle\u upload
    filter。钩住过滤器链的末端来执行SQL或其他任何操作。还有许多插件可以完成你正在尝试做的事情,避免你不得不编写i别自欺欺人


    作为旁注,您不应该在WP中完全手工创建SQL。使用类和函数。这还允许您使用
    $wpdb->prefix
    ,这是表的前缀。(您已经这样做了,对吗?)

    如果您试图将它们上载到主题文件夹中,您可能需要使用此功能。请在@copy destination中添加前缀,以确保将其复制到正确的路径。有关详细信息,请查看链接。我已经使用了该功能,但它不起作用。是否启用了调试?请尝试错误日志()在每条语句之后查看发生了什么。尝试输出所有变量以查看哪里出了问题。在if语句中出现错误\u log()?我再次尝试了get\u template\u directory\u uri()。它跳转到else语句,这是无法上载的语句。请查看文档中的错误\u log()然后尝试输出for循环中的所有变量。日志文件位于名为“debug”的wp content目录中。
    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.
            }
        }
    }