Получите размер файла прежде, чем загрузить и рассчитать сколько уже загруженный (http+ruby)

Может кто-либо помогать мне к

  • получите размер файла, прежде чем я начну загружать
  • отобразитесь, сколько % было уже загружено

.

require 'net/http'
require 'uri'

url = "http://www.onalllevels.com/2009-12-02TheYangShow_Squidoo_Part 1.flv"

url_base = url.split('/')[2]
url_path = '/'+url.split('/')[3..-1].join('/')

Net::HTTP.start(url_base) do |http|
  resp = http.get(URI.escape(url_path))
  open("test.file", "wb") do |file|
    file.write(resp.body)
  end
end
puts "Done."
11
задан Radek 20 February 2010 в 04:34
поделиться

3 ответа

так что я заставил его работать даже с прогресс-баром ....

require 'net/http'
require 'uri'
require 'progressbar'

url = "url with some file"


url_base = url.split('/')[2]
url_path = '/'+url.split('/')[3..-1].join('/')
@counter = 0

Net::HTTP.start(url_base) do |http|
  response = http.request_head(URI.escape(url_path))
  ProgressBar#format_arguments=[:title, :percentage, :bar, :stat_for_file_transfer]
  pbar = ProgressBar.new("file name:", response['content-length'].to_i)
  File.open("test.file", 'w') {|f|
    http.get(URI.escape(url_path)) do |str|
      f.write str
  @counter += str.length 
  pbar.set(@counter)
    end
   }
end
pbar.finish
puts "Done."
4
ответ дан 3 December 2019 в 03:04
поделиться

Используйте метод request_head. Примерно так

response = http.request_head('http://www.example.com/remote-file.ext')
file_size = response['content-length']

Размер_файла будет в байтах.

Перейдите по этим двум ссылкам для получения дополнительной информации.

http://ruby-doc.org/stdlib/libdoc/net/http/rdoc/classes/Net/HTTP.html#M000695

http://curl.haxx.se/mail/archive-2002 -07 / 0070.html

22
ответ дан 3 December 2019 в 03:04
поделиться

AES сильно отличается, AES создает SPN, сеть подстановок. Он генерирует s-боксы (поля подстановки) на основе полиномиальных функций, сгенерированных во время шифрования. Он выполняет его через 10-14 раундов подстановки на уровне байтов и перестановки на уровне битов, битовая длина ключа определяет количество раундов и круглых ключей.

RSA основана на факторах больших простых чисел, которые чрезвычайно трудно вычислить, но довольно легко первоначально зашифровать.

-121--1541464-

Перетасовка Фишера-Йейтса или как она также известна как перетасовка Кнута.

-121--2338698-

Размер файла доступен в заголовке ответа HTTP Content-Length . Если его нет, ты ничего не можешь сделать. Чтобы рассчитать процент, достаточно сделать начальную школу математической как (часть/всего * 100).

3
ответ дан 3 December 2019 в 03:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: