videos tamaño que por pese pesados para mitad menos maximo grandes enviar cual comprimir como audios archivos archivo ruby

ruby - que - ¿Obtener el tamaño exacto del archivo en megabytes?



cual es el tamaño maximo para enviar un archivo en whatsapp (4)

Es posible que encuentre útil una función de formato ( tamaño de archivo de impresión bonito ), y aquí está mi ejemplo,

def format_mb(size) conv = [ ''b'', ''kb'', ''mb'', ''gb'', ''tb'', ''pb'', ''eb'' ]; scale = 1024; ndx=1 if( size < 2*(scale**ndx) ) then return "#{(size)} #{conv[ndx-1]}" end size=size.to_f [2,3,4,5,6,7].each do |ndx| if( size < 2*(scale**ndx) ) then return "#{''%.3f'' % (size/(scale**(ndx-1)))} #{conv[ndx-1]}" end end ndx=7 return "#{''%.3f'' % (size/(scale**(ndx-1)))} #{conv[ndx-1]}" end

Pruébalo,

tries = [ 1,2,3,500,1000,1024,3000,99999,999999,999999999,9999999999,999999999999,99999999999999,3333333333333333,555555555555555555555] tries.each { |x| print "size #{x} -> #{format_mb(x)}/n" }

Lo que produce,

size 1 -> 1 b size 2 -> 2 b size 3 -> 3 b size 500 -> 500 b size 1000 -> 1000 b size 1024 -> 1024 b size 3000 -> 2.930 kb size 99999 -> 97.655 kb size 999999 -> 976.562 kb size 999999999 -> 953.674 mb size 9999999999 -> 9.313 gb size 999999999999 -> 931.323 gb size 99999999999999 -> 90.949 tb size 3333333333333333 -> 2.961 pb size 555555555555555555555 -> 481.868 eb

¿Cómo puedo obtener el tamaño exacto del archivo en MB? Intenté esto:

compressed_file_size = File.size("Compressed/#{project}.tar.bz2") / 1024000 puts "file size is #{compressed_file_size} MB"

Pero cortó el 0.9 y mostró 2 MB en lugar de 2.9 MB.


Estás haciendo una división entera (que deja caer la parte fraccionaria). Intenta dividir por 1024000.0 para que Ruby sepa que quieres hacer cálculos de punto flotante.


Tratar:

compressed_file_size = File.size("Compressed/#{project}.tar.bz2").to_f / 1024000


Tratar:

compressed_file_size = File.size("Compressed/#{project}.tar.bz2").to_f / 2**20 formatted_file_size = ''%.2f'' % compressed_file_size

Un trazador de líneas:

compressed_file_size = ''%.2f'' % (File.size("Compressed/#{project}.tar.bz2").to_f / 2**20)

o:

compressed_file_size = (File.size("Compressed/#{project}.tar.bz2").to_f / 2**20).round(2)

Más información sobre % -operator of String: http://ruby-doc.org/core-1.9/classes/String.html#M000207

BTW: Prefiero "MiB" en lugar de "MB" si uso los cálculos de base2 (consulte: http://en.wikipedia.org/wiki/Mebibyte )