2013-03-15 5 views
1

В настоящее время я использую этот код для загрузки PHP файла (находятся непосредственно на WordPress страницы):Wordpress загрузка пользовательских файлов на странице

<form enctype="multipart/form-data" action="upload.php" method="POST"> 
Please choose a file: <input name="uploaded" type="file" /><br /> 
<input type="submit" value="Upload" /> 
</form> 

upload.php

$allowedExts = array("jpg", "jpeg", "gif", "png"); 
    $extension = end(explode(".", $_FILES["file"]["name"])); 
    if ((($_FILES["file"]["type"] == "image/gif") 
     || ($_FILES["file"]["type"] == "image/jpeg") 
     || ($_FILES["file"]["type"] == "image/png") 
     || ($_FILES["file"]["type"] == "image/pjpeg")) 
     && ($_FILES["file"]["size"] < 20000) 
     && in_array($extension, $allowedExts)) 
    { 
     if ($_FILES["file"]["error"] > 0) 
     { 
      echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
     } 
     else 
     { 
      echo "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>"; 

      if (file_exists("upload/" . $_FILES["file"]["name"])) 
      { 
       echo $_FILES["file"]["name"] . " already exists. "; 
      } 
      else 
      { 
       move_uploaded_file($_FILES["file"]["tmp_name"], 
            "upload/" . $_FILES["file"]["name"]); 
       echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
      } 
     } 
    } 
    else 
    { 
     echo "Invalid file"; 
    } 

Он всегда возвращается " неверный файл ", даже если я знаю, что 100% он должен работать.

Я искал информацию в Интернете, и я думаю, что WP не может делать enctype = "multipart/form-data", поэтому он не работает.

У кого-нибудь есть работа или любая идея, почему это не сработает?

ответ

-1

Почему бы не использовать встроенный загрузчик WordPress для загрузки файла?
Вот краткое руководство о том, как реализовать WordPress Uploader

WordPress Uploader

+0

Потому что это пользовательский тип файла. Загрузка не позволит мне загрузить его. – objectiveccoder001

+0

@ objectiveccoder001 взгляните на эту ссылку http://wordpress.org/support/topic/file-upload-with-custom-post-type#post-1601832 надеюсь, что эта помощь вам поможет. –

2

Я знаю, что этот пост своего рода старый, но мы надеемся, поможет другим.

Я делал что-то очень похожее (пользовательские загрузки для отображения на пользовательской странице), а также практически с тем же кодом, что и objectiveccoder001. Я продолжал получать «Недопустимый файл». и ошибки разрешения записи. Я в конечном итоге происходит с этим:

if (! function_exists('wp_handle_upload')) require_once(ABSPATH . 'wp-admin/includes/file.php'); 
$uploadedfile = $_FILES['file']; 
$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"; 
} 

отлично работает, если вы не хотите использовать WordPress медиа загрузчик и просто нужен простой загрузки файла. Он по-прежнему загружает его, используя устаревшую файловую структуру, такую ​​как встроенный загрузчик. Затем вы можете просто использовать массив $movefile, чтобы получить данные этого файла.

Ссылка: http://codex.wordpress.org/Function_Reference/wp_handle_upload

+0

Полная помощь для загрузки пользовательских файлов –

0

Вы можете использовать WordPress по умолчанию медиа-файлов загрузчиком с помощью этого кода и просто получить ссылку на изображение в JQuery

<label for="upload_image"> 
     <input id="upload_image" type="text" size="36" name="ad_image" value="http://" /> 
     <input id="upload_image_button" class="button" type="button" value="Upload Image" /> 
     <br />Enter a URL or upload an image 
    </label> 

<?php 
add_action('admin_enqueue_scripts', 'my_admin_scripts'); 

function my_admin_scripts() { 
    if (isset($_GET['page']) && $_GET['page'] == 'my_plugin_page') { 
     wp_enqueue_media(); 
     wp_register_script('my-admin-js', WP_PLUGIN_URL.'/my-plugin/my-admin.js', array('jquery')); 
     wp_enqueue_script('my-admin-js'); 
    } 
} 

?> 

<script> 
    jQuery(document).ready(function($){ 


    var custom_uploader; 


    $('#upload_image_button').click(function(e) { 

     e.preventDefault(); 

     //If the uploader object has already been created, reopen the dialog 
     if (custom_uploader) { 
      custom_uploader.open(); 
      return; 
     } 

     //Extend the wp.media object 
     custom_uploader = wp.media.frames.file_frame = wp.media({ 
      title: 'Choose Image', 
      button: { 
       text: 'Choose Image' 
      }, 
      multiple: true 
     }); 

     //When a file is selected, grab the URL and set it as the text field's value 
     custom_uploader.on('select', function() { 
      console.log(custom_uploader.state().get('selection').toJSON()); 
      attachment = custom_uploader.state().get('selection').first().toJSON(); 
      $('#upload_image').val(attachment.url); 
     }); 

     //Open the uploader dialog 
     custom_uploader.open(); 

    }); 


}); 
    </script>