我在上传文件时遇到问题。上传似乎没有报告错误。我上传的文件夹上有777。该系统是wordpress,我不知道我做错了什么。
应该注意的是,表格是另一种形式。最终的结果是上传图像(这个形式,在较大的内部),允许用户在提交第二个表单之前裁剪图像并添加标签,标题描述等。第二个表单的最终提交将发布到自定义帖子类型,并且工作正常。只是我关注的移动文件和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>
答案 0 :(得分:1)
问题在于这一行:
move_uploaded_file($_FILES["file"]["tmp_name"], $_FILES["file"]["name"]);
您需要在第二个参数中指定上传的目录,如下所示:
move_uploaded_file($_FILES["file"]["tmp_name"], $upload_dir.$_FILES["file"]["name"]);
答案 1 :(得分:1)
好的,所以这是一个复杂的过程。在Wordpress之外就足够简单,但内心......这很痛苦。
我需要更改一些东西,首先文件大小以字节为单位而不是kb!白痴!...(感谢巴拿马杰克让我再次看到它并提醒我不要假设。)
其次,move_uploaded_file()函数在wordpress中不起作用。相反,我拼凑了一些有用的帖子:http://wordpress.org/support/topic/using-move_uploaded_file-in-a-plugin
$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);
(请注意,如果您使用此代码,您将需要知道您正在做什么,因为问题和答案中的引用不相关。)
通过这个我能够将上传的文件发送到uploads目录并生成wordpress喜欢的各种图像大小(80x80拇指,中等,大等)。
为什么WP不允许move_uploaded_file超出......任何人?
无论哪种方式,都有可能,只是一种痛苦。我希望这会有所帮助。
我过去使用的其他资源: http://cube3x.com/2013/03/upload-files-to-wordpress-media-library-using-php/