WordPress用户上传没有扩展名的照片

时间:2015-05-27 05:07:50

标签: php wordpress file-upload

我在这里遇到最奇怪的问题。我的网站上有一位作家,使用WordPress 4.2.2(但它发生了好几个月)不断上传照片的名称如())00,甚至没有扩展名,并且出于某种黑暗的原因,这些图片绕过了WordPress上传过滤器并获得了疯狂的名称,例如jpgjpg4

当我们使用我们的图像调整大小系统结束使用jpg12-250x100. (注意尾随点)这样的名称创建图像时,混乱甚至更大。

因此我们的CloudFlare缓存中断,内部缓存中断并完成了这个青少年的卧室,我无法通过超级用户访问重现此错误甚至。我已经检查了他的用户,但他没有unfiltered_upload的角色。

我甚至不知道如何开始这项调查,因为我无法使用我的帐户进行调查。 WordPress'是否有任何过滤器?上传系统,我可以搜索我的插件,以隔离可疑的代码?我现在完全失明了。

谢谢, 维尼。

2 个答案:

答案 0 :(得分:5)

您可以检查wp_check_filetype_and_ext以检查文件类型和正确的扩展名。

参考:https://codex.wordpress.org/Function_Reference/wp_check_filetype_and_ext

您可以使用wp_handle_upload挂钩来处理上传的文件,类似于: https://wordpress.stackexchange.com/a/38585

答案 1 :(得分:2)

Hello Vinicius Tavares,

如果你需要WordPress上传没有扩展名的照片,请按照以下步骤操作。

1)添加管理页面

2)添加wordpress媒体文件

3)为图像上传编写Html

4)用于图像上传媒体的js

5)将图像保存在数据库中。

add_action( 'admin_menu', 'register_my_custom_menu_page' );

    function register_my_custom_menu_page() {
        add_menu_page( 'Image uploding', 'Image uploding', 'manage_options', 'myplugin/myplugin-admin.php', 'Uploding_images_own', '', 6 );
    }
    function Uploding_images_own(){
        wp_enqueue_script('jquery');
        wp_enqueue_media();
    ?>
    <div style="margin:20px 20px">
       <label for="image_url">Image</label>
       <input type="text" name="image_url" id="image_url" class="regular-text">
       <input type="button" name="upload-btn" id="upload-btn" class="button-secondary" value="Upload Image">
    </div>
    <script type="text/javascript">
    jQuery(document).ready(function($){
        $('#upload-btn').click(function(e) {
            e.preventDefault();
            var image = wp.media({ 
                title: 'Upload Image',
                // mutiple: true if you want to upload multiple files at once
                multiple: false
            }).open()
            .on('select', function(e){
                // This will return the selected image from the Media Uploader, the result is an object
                var uploaded_image = image.state().get('selection').first();
                // We convert uploaded_image to a JSON object to make accessing it easier
                // Output to the console uploaded_image
                console.log(uploaded_image);
                var image_url = uploaded_image.toJSON().url;
                // Let's assign the url value to the input field
                $('#image_url').val(image_url);
            });
        });
    });
    </script>
    <?php } ?>