2015-07-26 1 views
1

Как остановить запись файла (загрузить форму удаленного URL), если размер файла превышает 500 КБ?Остановить файл, если размер файла превышает 500 КБ рубинов на рельсах

Я использую следующий код для загрузки удаленного файла

require 'open-uri' 
open('temp/demo.doc', 'wb') do |file| 
    file << open('http://example.com/demo.doc').read 
end 

этот код работает правильно, и я могу получить файлы в папке временных. Теперь я хочу, если размер файла превышает 500 КБ, тогда он должен прекратить записывать файл. Другими словами, я хочу только 500KB файла, если это больше, чем 500KB

ответ

2

IO#read, принимает байт аргумента, так что вы можете указать размер того, что вы хотите прочитать из IO, как показано ниже:

require 'open-uri' 
open('temp/demo.doc', 'wb') do |file| 
    file << open('http://example.com/demo.doc').read(500000) 
end 

вы также можете играть с такими вещами, как file.stat.size, но, учитывая, что вы напрямую связываетесь с файлом, вам нужно будет сделать больше вещей, чтобы заставить это работать.