$conf, $runtime; function_exists('chdir') AND chdir(APP_PATH); $r = 'mysql' == $conf['cache']['type'] ? website_set('runtime', $runtime) : cache_set('runtime', $runtime); } function runtime_truncate() { global $conf; 'mysql' == $conf['cache']['type'] ? website_set('runtime', '') : cache_delete('runtime'); } register_shutdown_function('runtime_save'); ?>
I'm googeling for hours now but can't find anything to my problem:
I'm building a plugin and want to embed a file input in its admin page. For this reason I'm giving the form-element the attribute enctype="multipart/form-data"
and I'm trying to access the file via $_FILES
, but it is empty!
Same with $_POST
.
Without enctype="multipart/form-data"
at least the filename and the other form fields appear in $_POST
.
I'm wondering if WordPress is removing direct access to these superglobals or somehow else preventing this regular way of uploading files.
I've read a lot about hooks and posting all forms to admin_post.php or admin_ajax.php but since my upload functionality is located in a class that's part of a big library with autoloading etc. it's not an option for me. My form is sending it's data to the current admin page (I tried it without the action
-Attribute but also specifying it action="admin.php?page=XYZ"
but nothing worked).
I would be thankful for every hint!
I'm googeling for hours now but can't find anything to my problem:
I'm building a plugin and want to embed a file input in its admin page. For this reason I'm giving the form-element the attribute enctype="multipart/form-data"
and I'm trying to access the file via $_FILES
, but it is empty!
Same with $_POST
.
Without enctype="multipart/form-data"
at least the filename and the other form fields appear in $_POST
.
I'm wondering if WordPress is removing direct access to these superglobals or somehow else preventing this regular way of uploading files.
I've read a lot about hooks and posting all forms to admin_post.php or admin_ajax.php but since my upload functionality is located in a class that's part of a big library with autoloading etc. it's not an option for me. My form is sending it's data to the current admin page (I tried it without the action
-Attribute but also specifying it action="admin.php?page=XYZ"
but nothing worked).
I would be thankful for every hint!
If you want to upload in a custom folder you can use the following function. Add the function in functions.php
function upload_user_file( $file = array(),$path ) {
if(!empty($file))
{
$upload_dir=$path;
$uploaded=move_uploaded_file($file['tmp_name'], $upload_dir.$file['name']);
if($uploaded)
{
echo "uploaded successfully ";
}else
{
echo "some error in upload " ;print_r($file['error']);
}
}
}
Make a form in your template file like this:
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" name="upload">
</form>
Call the upload function in template file like before get_header()
function:
if(isset($_POST['upload']))
{
if( ! empty( $_FILES ) )
{
$file=$_FILES['file']; // file array
$upload_dir=wp_upload_dir();
$path=$upload_dir['basedir'].'/myuploads/'; //upload dir.
if(!is_dir($path)) { mkdir($path); }
$attachment_id = upload_user_file( $file ,$path);
}
}