我需要在wordpress上的自定义php插件中添加徽标上传功能。 我在wordpress codex上找到了这段代码:
if ( ! function_exists( 'wp_handle_upload' ) ) require_once( ABSPATH . 'wp-admin/includes/file.php' );
$uploadedfile = $_FILES['editfile'];
$upload_overrides = array( 'test_form' => false );
$movefile = wp_handle_upload( $uploadedfile, $upload_overrides );
if ( $movefile ) {
echo "File is valid, and was successfully uploaded.\n";
var_dump( $movefile);
} else {
echo "Possible file upload attack!\n";
}
以下是表格:
<form action="' . site_url('/edit-company/?cid=' . $_GET['cid']) . '" method="post">
<label><b>Company Name:</b></label> <input type="text" name="editname" value="' . $company->company_name . '">
<label><b>Address:</b></label> <input type="text" name="editaddress" value="' . $company->company_address . '">
<label><b>Telephone:</b></label> <input type="text" name="edittelephone" value="' . $company->company_telephone . '">
<label><b>Fax:</b></label> <input type="text" name="editfax" value="' . $company->company_fax . '">
<label><b>Email:</b></label> <input type="text" name="editemail" value="' . $company->company_email . '">
<label><b>Website:</b></label> <input type="text" name="editwebsite" value="' . $company->company_website . '">
<label><b>Logo:</b></label> <input type="file" name="editfile" id="file">
<input type="submit" value="Submit">
</form>
如果我向此提交文件,则会出现以下错误:
文件有效,已成功上传。 array(1){[“error”] =&gt; string(212)“文件为空。请上传更实质的内容。 此错误也可能是由您的上传被禁用引起的 php.ini或post_max_size被定义为小于 php.ini中的upload_max_filesize。“}
我提交的文件大小约为50kb。上传更大或更小的文件似乎没有什么区别。
我在Wordpress管理员中上传任何大小的文件没有问题我不会认为php.ini或post max size导致此问题。
如果您对此有任何提示或信息,请告诉我。我已经坚持了很长一段时间了。尝试在vanilla PHP中使用简单的上传脚本,但似乎也没有用,所以我回来试图用wp函数完成它。
更新: - 尝试将上传文件夹的权限设置为777 - 没有帮助
答案 0 :(得分:3)
请确保您的上传表单不在其他表单中。因为一旦我得到了与你相同的错误,问题是因为我的上传表单位于另一个表单内。
希望这可以提供帮助。
<强> [更新] 强>
您的表单很好,但我看到您捕获的输入字段名称和帖子变量名称不同
$uploadedfile = $_FILES['file'];
<input type="file" name="editfile" id="file">
这些名称不能有所不同。尝试像这样编辑
$uploadedfile = $_FILES['editfile'];
<强> [更新] 强>
还请将其添加到表单的属性
enctype="multipart/form-data"