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