Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用php移动上传的文件_Php_Image_Wordpress_Forms - Fatal编程技术网

用php移动上传的文件

用php移动上传的文件,php,image,wordpress,forms,Php,Image,Wordpress,Forms,我在上传后移动文件时遇到问题。上载似乎通过了“确定”,未报告任何错误。我有777在文件夹上传到。系统是wordpress,我不知道我做错了什么 应该注意的是,表单位于另一个表单中。最终的结果是有一个图像上传(这个表单,在较大的表单中),允许用户在提交第二个表单之前裁剪图像并添加标签、标题描述等。第二个表单的最终提交将发布到自定义的post类型,这很好。我关心的只是移动文件和jcrop 有人能看到里面有打字错误吗 我不能 <form method="POST" action="" encty

我在上传后移动文件时遇到问题。上载似乎通过了“确定”,未报告任何错误。我有777在文件夹上传到。系统是wordpress,我不知道我做错了什么

应该注意的是,表单位于另一个表单中。最终的结果是有一个图像上传(这个表单,在较大的表单中),允许用户在提交第二个表单之前裁剪图像并添加标签、标题描述等。第二个表单的最终提交将发布到自定义的post类型,这很好。我关心的只是移动文件和jcrop

有人能看到里面有打字错误吗

我不能

<form method="POST" action="" enctype="multipart/form-data">
                <label for="image_upload">Image Upload</label>
                <input id="image_upload" type="file" class="text_input" value="" name="file">
                <input id="image-upload" type="submit" class="button" value="Upload" name="upload">

                <!-- <img id="image-upload" src="<?php echo get_template_directory_uri(); ?>/images/sago.jpg" alt=""> -->

                    <?php 
                    // Process the upload 
                        if (!empty ($_POST['upload'])) {

                            $allowedExts = array("gif", "jpeg", "jpg", "png");
                            $temp = explode(".", $_FILES["file"]["name"]);
                            $extension = end($temp);
                            if ((($_FILES["file"]["type"] == "image/gif")
                            || ($_FILES["file"]["type"] == "image/jpeg")
                            || ($_FILES["file"]["type"] == "image/jpg")
                            || ($_FILES["file"]["type"] == "image/pjpeg")
                            || ($_FILES["file"]["type"] == "image/x-png")
                            || ($_FILES["file"]["type"] == "image/png"))
                            && ($_FILES["file"]["size"] < 100000)
                            && in_array($extension, $allowedExts))
                              {
                              if ($_FILES["file"]["error"] > 0)
                                {
                                echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
                                }
                              else
                                {
                                echo "<div> Upload: " . $_FILES["file"]["name"] . "<br>";
                                echo "Type: " . $_FILES["file"]["type"] . "<br>";
                                echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
                                echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br> </div>";

                                //set temp dir path
                                $path = $_SERVER['DOCUMENT_ROOT'];
                                $upload_dir = $path . '/wp-content/uploads/jcrop_temp/';    

                                if (file_exists($path . '/wp-content/uploads/jcrop_temp/' . $_FILES["file"]["name"]))
                                  {
                                  echo "<div style='border: solid 1px #BF5738; color: #BF5738; padding: 1em;'> The File: <span style='color: black;'>" . $_FILES["file"]["name"] . "</span> already exists. Please rename the file before trying again. </div>";
                                  }
                                else
                                  {
                                  move_uploaded_file($_FILES["file"]["tmp_name"], $_FILES["file"]["name"]);
                                  echo "Stored in: " . $upload_dir . $_FILES["file"]["name"];
                                  echo "<div style='border:solid 1px #E1E1E1; max-width: 710px; text-align: center;'>
                                            <img id='image-upload' src='" . "/wp-content/uploads/jcrop_temp/" . $_FILES["file"]["name"] . "'>
                                        </div>
                                        ";
                                  }
                                }
                              }
                            else
                              {
                              echo "Invalid file";
                              }

                            //end upolad if  
                            }

                    ?>
            </form>

图像上传

问题在于这一行:

move_uploaded_file($_FILES["file"]["tmp_name"], $_FILES["file"]["name"]);
您需要在第二个参数中指定上载的目录,如下所示:

move_uploaded_file($_FILES["file"]["tmp_name"], $upload_dir.$_FILES["file"]["name"]);

好的,这是一个复杂的过程。在Wordpress之外很简单,但是在里面。。。。这是一种痛苦

有几件事我需要更改,首先文件大小是字节而不是kb!白痴!。。。(感谢巴拿马杰克让我再看一遍,并提醒我不要想当然。)

其次,move_upload_file()函数在wordpress中不起作用。相反,我从这篇有用的帖子中拼凑了一些东西:

(请注意,如果您使用此代码,您将需要知道您在做什么,因为问题和答案中的引用不相关。)

有了这个,我可以将上传的文件发送到uploads目录,并生成wordpress喜欢的各种图像大小(80x80拇指、中、大等)

为什么WP不允许移动上传的文件?有人吗

不管怎样,这都是可能的,只是一种痛苦。我希望这有帮助

我用来让它工作的其他资源:


文件有多大?25k,不超过限制,我已经将其提升到了100000,因为我测试了Hi,感谢指针。在测试并试图上传到服务器的根目录之后,我忘记了再次添加upload_dir。如果我请求并回显$upload_dir.$_FILES[“file”][“name”];,我明白了:/Users/vince/Sites/lolhatespeech/wp/wp content/uploads/jcrop_temp/1-test-image.png。文件夹中仍然没有文件,也没有错误。我在这里很困惑!好的,所以我把它剥离成一个单独的形式…现在jpg文件一切正常,但我得到一个无效的png文件…不知道为什么。另外,我还没有命名表单,我现在用isset$\u POST['upload']调用脚本。它是否适用于每个png?PNG比JPEG或GIF占用的空间大得多。可能是文件太大了。试着制作一个1x1 PNG并上传它。文件大小决定了它。。。像个白痴一样,我认为大小是以kb设置的,而不是字节!
$path_array  = wp_upload_dir();
        $path = str_replace('\\', '/', $path_array['path']);
        $old_name = $_FILES["image_upload_path"]["name"];
        $split_name = explode('.',$old_name);
        $time = time();
        $file_name = $time.".".$split_name[1];
        move_uploaded_file($_FILES["image_upload_path"]["tmp_name"],$path. "/" . $file_name);