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