Rails Paperclip如何检测图像大小和处理大图像有何不同?

时间:2013-11-29 19:52:41

标签: ruby-on-rails paperclip

我目前对图片上传的限制为2兆字节。有没有办法检测更大的图像(> 2mb)并以不同的方式处理它们?我想直接链接到他们,而不是上传到我的应用程序并进行处理。

1 个答案:

答案 0 :(得分:1)

无需上传到服务器,唯一的方法是通过javascript,只有某些浏览器支持此选项。

以下是使用Modernizr检测浏览器的filereader属性并允许最大3 Mb的示例:

var fileErrors = false;
$("input:file#user_photo_picture").change(function (){
    if (Modernizr.filereader){  
        var fileName = $(this).val();
        var sizeInMB = (this.files[0].size / (1024*1024)).toFixed(2);
        $(".file_reference").html(fileName.replace(/C:\\fakepath\\/i, ''));
        var extension = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();
        if (extension != "jpg" && extension != "png" && extension != "jpeg"){
            $('.new_user_photo').prepend("<div id='error_explanation'> <p>Not valid file</p></div>");
            fileErrors = true;
            return false;
        } else if(sizeInMB > 3){
            $('.new_user_photo').prepend("<div id='error_explanation'> <p>File is too big</p></div>");
            fileErrors = true;
            return false;
        } else {
            fileErrors = false;
        }
    }
});

编辑:记得在gemfile中包含Modernizr或手动:

https://github.com/Modernizr/Modernizr

https://github.com/russfrisch/modernizr-rails

编辑2:当然,这是jQuery,但通常你将它包含在你的rails项目中